如何从故事板中的didSelectRowAtIndexPath打开视图控制器?

时间:2012-01-04 09:45:33

标签: uitableview storyboard detailview

我有一个带tabbarcontroller的故事板。标签栏之一有一个tableview,我希望当用户从tableview中点击一行时打开一个详细视图。问题是当我打开详细视图标签栏和导航栏隐藏时...在故事板中我创建了一个新的视图控制器的详细视图,然后我创建了一个新文件并将其引用到详细视图类。

didselectrowatindexpath中的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath {

detalleYouTube *dvController = [[detalleYouTube alloc] init];

[self.navigationController pushViewController:dvController animated:YES];

}

提前谢谢!

3 个答案:

答案 0 :(得分:6)

这有点旧,但如果有人需要这样做,这是一个简单的方法:

您可以使用标签栏中的视图添加segue来detalleYouTube,将标识符添加到segue并执行此操作:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath
{
[self performSegueWithIdentifier:@"segueIdentifier" sender:tableView];
}

答案 1 :(得分:5)

另一种方法是不使用tableView:didSelectRowAtIndexPath而是使用prepareForSegue:sender

我这样做的方式是:

-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
    DetailViewController *viewController = [segue destinationViewController];
    CustomObject *custObject = [arrayOfObjects objectAtIndex:[self.tableView indexPathForSelectedRow].row];
    viewController.objectNeeded = custObject;
}

此示例基于您的详细视图控制器已连接到表视图控制器的想法。

答案 2 :(得分:3)

我假设您将“详细信息”视图作为故事板的一部分(不在单独的XIB中),如果是这样,您将需要在“详细信息”TabBarItem seque的开头放置单独的NavigationController。

这个页面有一个很好的教程,我认为你想要实现的目标: http://maybelost.com/2011/10/tutorial-storyboard-in-xcode-4-2-with-navigation-controller-and-tabbar-controller-part1/

另请查看这些链接以获得更深入的故事板教程:

http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1

http://www.raywenderlich.com/5191/beginning-storyboards-in-ios-5-part-2