我正在学习iOS并且使用iOS 5编写了一个简单的iPhone应用程序。该应用程序显示一个UITableView,其中填充了演讲者的姓名,当我选择其中一个姓名时,它应该转到一个UIViewController并显示有关该人员的详细信息(名称,地址等),因此其实是两个ViewControllers,一个是UITableViewController和一个是UIViewController(都是子类)。
因此,在MICSpeakersTableViewController : UITableViewController中,我有以下内容:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MICSpeakerDetailViewController *detailViewController = [[MICSpeakerDetailViewController alloc] initWithNibName:@"Detail" bundle:nil];
[detailViewController setSpeaker:[[self getSpeakers] objectAtIndex:indexPath.row]];
[self.navigationController pushViewController:detailViewController animated:YES];
}
当我选择它并填充扬声器(在其不为空且描述匹配时)时,它将被调用。
然后我在同一个实现中有这个:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath *indexPath = [ self.tableView indexPathForCell:sender];
if ([segue.identifier isEqualToString:@"Detail"])
[segue.destinationViewController setSpeaker:[[self getSpeakers] objectAtIndex:indexPath.row]];
}
在didSelectRowAtIndexPath中调用了segue的标识符为“Detail”,destinationViewController的发言者设置正确(不为nil,描述匹配)。我不是很确定为什么我必须再次设置它,因为我在didSelectRowAtIndexPath中设置了它,但我又设置了它,似乎没有什么影响。
最后,在MICSpeakerDetailViewController中,调用了initWithNibName方法, self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];返回一个实例。
然而,segue从未发生过,viewDidLoad也从未被调用。
可能只是一些小问题,但我无法解决... 有什么建议吗?
编辑:这里是故事板的截图,显示了segue和控制器: