J'utilise les storyboards et j'ai un UITableView. J'ai un segue d'installation qui pousse à partir de mon tableau pour le détail de la VC. Mais quelle méthode dois-je utiliser pour gérer cela? Je vais avoir à passer une couple d'objets à la vue de détail. Mais dois-je utiliser didSelectRowAtIndex
ou -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
?
Réponses
Trop de publicités?Si vous utilisez prepareForSegue:sender:
alors vous n'aurez pas autant de changement si plus tard vous décidez de déclencher la séquence à partir d'un certain contrôle à l'extérieur de l'affichage de la table.
L' prepareForSegue:sender:
message est envoyé à la vue du contrôleur, donc, je proposerais quelque chose comme ceci:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Assume self.view is the table view
NSIndexPath *path = [self.tableView indexPathForSelectedRow];
DetailObject *detail = [self detailForIndexPath:path];
[segue.destinationViewController setDetail:detail];
}
Dans Swift:
override func prepareForSegue(_ segue: UIStoryboardSegue, sender sender: AnyObject?) {
let path = self.tableView.indexPathForSelectedRow()!
segue.destinationViewController.detail = self.detailForIndexPath(path)
}
rohit mandiwal
Points
4883
Eugene
Points
11
Si vous utilisez prepareForSegue:
vous pouvez vérifier qui est l'expéditeur et exécuter un code différent
Par exemple, dans swift
override func prepareForSeque(seque: UiStoryboardSeque, sender: AnyObject?)
{
var senderIsTableviewCell:Bool! = sender?.isKindOfClass(UITableViewCell)
if senderIsTableviewCell
{
//do something
}
}