在故事板中深入查看tableview

时间:2011-12-30 19:20:44

标签: xcode uitableview

我正在尝试使用Tab栏应用程序中的故事板进行深入研究。 我在解决如何让主表中的每一行指向其他不同的表时遇到问题。

这是我用来检测行选择的代码。

-(void)tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *__strong)indexPath {
    TableViewController *table = [self.storyboard instantiateViewControllerWithIdentifier:@"table"];
    [self.navigationController pushViewController:table animated:YES];

}

我该如何处理?

3 个答案:

答案 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

GitHub:http://www.github.com/jllust/UIStoryboardExamples

答案 1 :(得分:2)

我对此感到非常沮丧,因为带有tableviews的故事板在任何地方都没有被覆盖。我差点把我的头发拉出来试图解决这个问题。所以我的沮丧是你的运气!

将您的代码与我的代码进行比较,除了在最初的didSelectRowAtIndexPath:方法中,您有*_strong不应该具有_strong部分之外,您的代码看起来很好。它应该是这样的:(NSIndexPath *)indexPath {

此外,在引用Interface Builder中的instantiateViewControllerWithIdentifier时要小心。我不小心在'TITLE'下填写了实例变量的名称而不是'IDENTIFIER'

我希望这会有所帮助。我完全理解你的沮丧。

答案 2 :(得分:1)

在故事板中,如果内容为静态单元格,则可以从特定行按住Ctrl键拖动到导航控制器。然后将导航控制器连接到下一个表。看看这个屏幕截图。 http://cl.ly/1V2y0v202y390U0A351x

我的猜测是,在程序上,你需要做类似的事情,segue到一个NavigationController,它有一个表视图控制器作为它的根视图。