我正在使用ray的以下教程 http://www.raywenderlich.com/913/sqlite-101-for-iphone-developers-making-our-app
除了从didselectrow 填充的详细信息视图外,我还能让一切工作正常这就是他所拥有的
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (self.details == nil) {
self.details = [[[FailedBanksDetailViewController alloc] initWithNibName:@"FailedBanksDetailViewController" bundle:nil] autorelease];
}
FailedBankInfo *info = [_failedBankInfos objectAtIndex:indexPath.row];
_details.uniqueId = info.uniqueId;
[self.navigationController pushViewController:_details animated:YES];
[self performSegueWithIdentifier:@"testID" sender:self.view];
}
然而它不适用于故事板
有人可以帮助我,我到处寻找答案!!!
答案 0 :(得分:1)
目前您使用的代码为bob NIB和故事板。选择1并坚持下去。如果您使用故事板,只需执行segue然后处理prepareForSegue:sender:
以配置目标视图控制器。
答案 1 :(得分:0)
尝试:
self.details = [self.storyboard instantiateViewControllerWithIdentifier:@"FailedBanksDetailViewController"];
FailedBanksDetailViewController
是主故事板中视图控制器的identifier
。
由于您使用的是http://www.raywenderlich.com,因此可以查看故事板示例here。
答案 2 :(得分:0)
有两种选择:
您可以使用“故事板ID”(在Interface Builder中执行此操作)提供要转换到的场景,然后使用instantiateViewControllerWithIdentifier
代替initWithNibName
。
如果您在故事板中使用单元格原型,则根本不需要didSelectRowAtIndexPath
方法,而只需将细胞原型中的segue添加到下一个场景中。然后,您可以编写prepareForSegue
方法,将uniqueId
传递给下一个场景。
prepareForSegue
看起来像是:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"DetailsSegue"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
FailedBankInfo *info = [_failedBankInfos objectAtIndex:indexPath.row];
[(FailedBanksDetailViewController *)segue.destinationViewController setUniqueId:info.uniqueId];
}
}
显然,将DetailsSegue
替换为您为segue的故事板ID提供的任何名称。