我正在尝试使用Tab栏应用程序中的故事板进行深入研究。 我在解决如何让主表中的每一行指向其他不同的表时遇到问题。
这是我用来检测行选择的代码。
-(void)tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *__strong)indexPath {
TableViewController *table = [self.storyboard instantiateViewControllerWithIdentifier:@"table"];
[self.navigationController pushViewController:table animated:YES];
}
我该如何处理?
答案 0 :(得分:12)
UIStoryBoards真正的美丽是segues。 1.您可以将一个原型单元push segue链接到另一个不同的表视图控制器 2.您可以将一个原型单元推送segue循环链接回自身以进行钻取。
[self performSegueWithIdentifier:@"segueID" sender:MyObject];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"segueID"]) segue.destinationViewController.chosenCell = sender;
}
如果segue来自单元格单击,则发件人是单元格的发件人,您可以从表中获取它的索引路径,并将新信息传递给即将到来的视图控制器。 如果您希望单元格在单击时采用各种路径,请保留didSelectRowAtIndexPath并调用performSegueWithIndetifier,以便您可以选择向左或向右。
教程:http://jleeiii.blogspot.com/2012/05/uistoryboard-power-drill-batteries.html
答案 1 :(得分:2)
我对此感到非常沮丧,因为带有tableviews的故事板在任何地方都没有被覆盖。我差点把我的头发拉出来试图解决这个问题。所以我的沮丧是你的运气!
将您的代码与我的代码进行比较,除了在最初的didSelectRowAtIndexPath:
方法中,您有*_strong
,不应该具有_strong部分之外,您的代码看起来很好。它应该是这样的:(NSIndexPath *)indexPath {
此外,在引用Interface Builder中的instantiateViewControllerWithIdentifier时要小心。我不小心在'TITLE'下填写了实例变量的名称而不是'IDENTIFIER'
我希望这会有所帮助。我完全理解你的沮丧。
答案 2 :(得分:1)
在故事板中,如果内容为静态单元格,则可以从特定行按住Ctrl键拖动到导航控制器。然后将导航控制器连接到下一个表。看看这个屏幕截图。 http://cl.ly/1V2y0v202y390U0A351x
我的猜测是,在程序上,你需要做类似的事情,segue到一个NavigationController,它有一个表视图控制器作为它的根视图。