如何从情节提要中的 didSelectRowAtIndexPath 打开视图控制器?
Posted
技术标签:
【中文标题】如何从情节提要中的 didSelectRowAtIndexPath 打开视图控制器?【英文标题】:How to open view controller from didSelectRowAtIndexPath within storyboard? 【发布时间】:2012-02-02 05:33:01 【问题描述】:我有一个带有 tabbarcontroller 的故事板。选项卡栏之一有一个表格视图,我希望当用户从表格视图中连续点击时打开一个详细视图。问题是当我打开详细视图选项卡栏和导航栏隐藏...在情节提要中,我将详细视图创建为新视图控制器,然后创建一个新文件并将其引用到详细视图类。
didselectrowatindexpath 中的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
detalleYouTube *dvController = [[detalleYouTube alloc] init];
[self.navigationController pushViewController:dvController animated:YES];
提前谢谢你!
【问题讨论】:
【参考方案1】:我假设您将“详细信息”视图作为情节提要的一部分(而不是在单独的 XIB 中),如果是这样,您需要在“详细信息”TabBarItem 序列的开头放置一个单独的 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
【讨论】:
【参考方案2】:另一种方法是不使用 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;
此示例基于您的详细视图控制器连接到您的表视图控制器的想法。
【讨论】:
【参考方案3】:这有点老了,但如果有人需要这样做,这里有一个简单的方法:
您可以使用从标签栏中的视图中添加一个 segue 来删除 YouTube,为 segue 添加一个标识符并执行以下操作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[self performSegueWithIdentifier:@"segueIdentifier" sender:tableView];
【讨论】:
以上是关于如何从情节提要中的 didSelectRowAtIndexPath 打开视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式使用另一个视图中的按钮从情节提要中打开 UIViewController?
如何在 swift 中从情节提要中的 didSelectRowAt indexPath 打开视图标签栏控制器?