如何在segue期间从视图控制器引用tableView

Izz*_*npo 9 uiviewcontroller tableview ios5

我是iOS开发的新手,所以请放轻松我吧:)

使用适用于iOS 5的Xcode 4.2,我在IB中构建了一个视图控制器,其中的tableview通过push segue链接到详细视图控制器(在表视图单元级别)

我想根据所选单元格的索引,使用我的数据源中的数据设置详细页面标签.最初我编写"didSelectRowAtIndexPath"只是为了发现在segue处理之后调用它,并发现我需要调用prepareForSegue而不是

我的问题是,无论我尝试什么,因为tableView不是prepareForSegue的传递参数(与我迄今为止使用的大多数其他方法不同),我很难在视图控制器中访问tableView以便调用indexPath方法,这样我可以引用我的数据源

我已经看到很多使用self的例子,如下所示,但是这会导致一个错误,指出viewView在视图控制器中不存在

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

  NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
  DetailViewController *detail = [segue destinationViewController];
  detail.primary = [datasource objectAtIndex:selectedIndexPath.row];
  detail.seconday = [datalist objectForKey:detail.primary];
}
Run Code Online (Sandbox Code Playgroud)

我也试过用

ViewController *main = [segue viewController];
Run Code Online (Sandbox Code Playgroud)

而不是使用自我,但这导致相同的问题

我知道我可以将示例重写为Table View Controller,但是想知道这是否可能?正如我所见,人们在开发中使用这两种方法

作为参考,我正在学习本教程... http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-and.html

当我到达完成详细信息页面的部分时,我想,为什么不使用segue将表格视图单元格链接到详细信息页面,并在显示详细信息页面之前编写状态和资本的复制代码.从本教程中可以看出,主控制器是一个视图控制器

我的理解是,如果需要在以后开发更复杂的东西,不使用UITableViewController会给任何应用程序更大的灵活性

希望你可以帮忙,Izzy

小智 9

我也是iOS的新手,但它的价值在于:

听起来你需要在UIViewControllerClass中创建一个指向表视图对象的指针.

@interface YourClass : UIViewController
{
    IBOutlet UITableView  *MyTableView;
}
@property ... IBOutlet UITableView *MyTableView;
Run Code Online (Sandbox Code Playgroud)

...然后将其连接到IB中的"表格视图".这样,在prepareForSegue中,您可以访问UITableView对象.

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSIndexPath *selectedIndexPath = [self.MyTableView indexPathForSelectedRow];
    ...
}
Run Code Online (Sandbox Code Playgroud)