Jestem w sytuacji, w której myślę, że jestem bliski rozwiązania, ale może nie.Przekazywanie parametrów do akcji Selektora
Mam widok tabeli niestandardowych komórek widoku tabeli.
Obecnie każdy plik tableviewcell ma 3 uybuttons, dostęp do nich i nadawanie im funkcjonalności nie stanowi problemu.
Jeden z 3 przycisków, z którymi mam problemy. Przycisk przesuwa użytkownika z bieżącego kontrolera nawigacyjnego do kontrolera podglądu strony internetowej, ale chcę, aby kontroler podglądu strony był adresem http, w którym aktualnie znajduje się komórka widoku tabeli.
Oto mała snippit kodu, którego używam.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Identifier";
SearchTableCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"SearchTableCell" owner:nil options:nil];
//cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseIdentifier];
for(id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[SearchTableCell class]])
{
cell = (SearchTableCell *)currentObject;
break;
}
}
}
Player *event = [_party.events objectAtIndex:indexPath.row];
cell.EventTitle.text = event.name;
cell.EventDescription.text = event.description;
cell.EventStartTime.text = event.start_date;
cell.EventEndTime.text = event.end_date;
cell.EventTicketURL = event.ticketURL;
NSString *string = event.ticketURL;
[cell.buyTicketOutlet addTarget:self action:@selector(pushToTicketURL:string) forControlEvents:UIControlEventTouchUpInside];
//[cell.AddEventOutlet addTarget:self action:@selector(:) forControlEvents:UIControlEventTouchUpInside];
//cell.textLabel.numberOfLines = 2;
return cell;
}
- (void) pushToTicketURL:(NSString *)string
{
UIViewController *webViewController = [[UIViewController alloc] init];
webViewController.title = @"Tickets";
UIWebView *uiWebView = [[UIWebView alloc] initWithFrame: CGRectMake(0,0,320,370)];
[uiWebView loadRequest:[NSURLRequest requestWithURL: [NSURL URLWithString:string]]];
[webViewController.view addSubview:uiWebView];
[uiWebView release];
[self.navigationController pushViewController:webViewController animated:YES];
NSLog(@"Button pressed");
}
Widziałem kilka innych opinii na to samo pytanie, ale jak powiedziałem, po prostu trzeba przekazać jeden parametr do selektora, rozumiem, że nie jest to możliwe, ale jakie inne sposoby mogę iść o tym problemie ?
Może moje pytanie jest źle sformułowane: /.
Każda pomoc będzie wielki :)
EDIT: Rozumiem [cell.buyTicketOutlet addTarget:self action:@selector(pushToTicketURL:string) forControlEvents:UIControlEventTouchUpInside];
daje błędy. Ale co mogę zrobić, by kodować, aby robić to, co chcę?
Daj mi znać, jeśli potrzebujesz pomocy w pisaniu tego kodu. – dmee3
Wziąłem twoją radę i znalazłem link do kodu, żeby zrobić dokładnie to, co powiedziałeś. Działało :) – jsetting32
Niestety, moja reputacja nie pozwala mi komentować innych odpowiedzi. jsetting32, fragment kodu, który podałeś jest naprawdę świetny i jest jeszcze lepszy sposób robienia tego niż robienie tagów. Świetna robota ^^ Odnosząc się do poniższego argumentu, Rob Napier miał rację. Właściwie wykorzystałbym jego podejście do dużych struktur danych, ponieważ jest znacznie bardziej zorganizowany. Ale ponieważ korzystałeś z superview zamiast tagów, powiedziałbym, żeby niczego nie zmieniać. Jest świetny tak jak jest! – dmee3