Sono in una situazione in cui penso di essere vicino a risolvere, ma forse no.Passare i parametri all'azione del selettore
Ho una vista tabella di celle tableview personalizzate.
Attualmente ogni tableviewcell ha 3 uibutton, accedervi e dare loro la funzionalità non è un problema.
Uno dei 3 pulsanti con cui ho problemi. Il pulsante spinge l'utente dal controller di navigazione corrente a un controller webview, ma voglio che il controller webview sia l'indirizzo http che la cella corrente della tabella mostra.
Ecco un piccolo snippit del codice che sto utilizzando.
- (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");
}
Ho visto alcune altre recensioni sulla stessa domanda, ma come ho detto, ho solo bisogno di passare un parametro ad un selettore, ho capito che non è possibile, ma quali altri modi posso andare su questo problema ?
Forse la mia domanda è mal formulata: /.
Qualsiasi aiuto sarà grande :)
EDIT: ho capito [cell.buyTicketOutlet addTarget:self action:@selector(pushToTicketURL:string) forControlEvents:UIControlEventTouchUpInside];
dà errori. Ma cosa può aggirare il codice per fare ciò che voglio?
Fammi sapere se hai bisogno di aiuto per scrivere quel codice. – dmee3
Ho seguito il tuo consiglio e ho trovato un link diretto al codice per fare esattamente quello che hai detto. Ha funzionato :) – jsetting32
Sfortunatamente, la mia reputazione non mi consente di commentare altre risposte. jsetting32, lo snippet del codice che hai fornito è davvero ottimo ed è anche un modo migliore di farlo, piuttosto che fare tag. Ottimo lavoro ^^ Per quanto riguarda l'argomento qui sotto, Rob Napier ha fatto un buon punto. In realtà utilizzerei il suo approccio con grandi strutture di dati, in quanto è molto più organizzato. Ma dal momento che hai finito con l'utilizzo di superview anziché tag, direi di non cambiare nulla. È fantastico così com'è! – dmee3