如何更改 initWithNibName 以供故事板使用?
Posted
技术标签:
【中文标题】如何更改 initWithNibName 以供故事板使用?【英文标题】:how do I change initWithNibName for storyboard use? 【发布时间】:2013-07-07 18:52:08 【问题描述】:我正在使用来自 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];
但它不适用于情节提要
谁能帮帮我,我到处找答案!!!
【问题讨论】:
【参考方案1】:目前您使用的代码是用于 bob 的 NIB 和情节提要。选择1并坚持下去。如果您使用故事板,只需执行 segue 然后处理 prepareForSegue:sender:
以配置目标视图控制器。
【讨论】:
【参考方案2】:尝试:
self.details = [self.storyboard instantiateViewControllerWithIdentifier:@"FailedBanksDetailViewController"];
其中FailedBanksDetailViewController
是主情节提要中视图控制器的identifier
。
由于您使用的是http://www.raywenderlich.com,您可以查看here 以获取故事板示例。
【讨论】:
【参考方案3】:几个选项:
您可以为要过渡到的场景提供“故事板 ID”(您在 Interface Builder 中执行此操作),然后使用 instantiateViewControllerWithIdentifier
而不是 initWithNibName
。
如果您在情节提要中使用单元原型,则根本不需要 didSelectRowAtIndexPath
方法,只需将单元原型中的转场添加到下一个场景即可。然后编写一个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 提供的任何名称。
【讨论】:
非常感谢!这开始对我有用,但是当我输入代码时,我得到一个错误 Property 'tableView' not found on object of 'locationViewController *' 有什么想法吗? 当我尝试在视图控制器顶部使用表格视图时会发生这种情况 @Thomasrocks 如果您按照该教程进行操作,FailedBanksListViewController
是一个 UITableViewController
子类,它为它提供了一个 tableView
属性。我不知道这个locationViewController
类是什么。您是否刚刚将 tableview 添加到 UIViewController
子类?如果是这样,表格视图的IBOutlet
是什么?只需将self.tableView
替换为您的tableview 的IBOutlet
。
我在视图顶部添加了一个表格视图,因为我试图将其作为子视图合并到另一个应用程序中。我不认为我为桌子添加了一个 iboutlet。我想我把自己弄糊涂了。我该怎么做?非常感谢您的回复以上是关于如何更改 initWithNibName 以供故事板使用?的主要内容,如果未能解决你的问题,请参考以下文章