如何从 selectedRowAtIndexPath 推送 DetailViewController
Posted
技术标签:
【中文标题】如何从 selectedRowAtIndexPath 推送 DetailViewController【英文标题】:How to push DetailViewController from selectedRowAtIndexPath 【发布时间】:2013-01-18 11:30:59 【问题描述】:当我从 SecondViewController 中单击一个单元格时,我想从 Storyboard 转到我的 DetailViewController。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
NSLog(@"Clicked at row: %@", [barCodeArray objectAtIndex:indexPath.row]);
如何推送到 DetailViewController 并发送 [barCodeArray objectAtIndex:indexPath.row]?
编辑:代码无效..
代码
/*DetailViewController *detailViewController1 = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
[self.navigationController pushViewController:detailViewController1 animated:YES];
[detailViewController1 release];
//[self.navigationController popViewControllerAnimated:YES];*/
【问题讨论】:
/*DetailViewController *detailViewController1 = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; [self.navigationController pushViewController:detailViewController1 动画:YES]; [detailViewController1 发布]; //[self.navigationController popViewControllerAnimated:YES];*/ 但不工作..有没有办法我没有设置笔尖名称,你知道我可以在哪里设置吗? / 检查笔尖名称是什么 尝试 [self presentModalViewController: detailViewController1 animated:YES];让我知道它是否有效.. 在我的编辑中出现错误:我发布了错误消息 DetailViewController xib 是否存在? 【参考方案1】:让我们假设 Listviewcontroller 是您的第一个包含 tableview 的视图控制器。从 didSelectRow 开始,您想要推送 Detailviewcontroller。
1.首先检查您的根视图控制器是否为导航控制器。
如果您使用的是故事板,那么首先您的 rootviewcontroller 必须是 Navigation Controller
查看MainStoryboard文件。
应该是这样的。
-> 导航控制器-> Listviewcontroller -> Detailviewcontroller
2。一旦确认您的 rootviewcontroller 是 Navigation Controller。然后从一个 Listviewcontroller 导航到 Detailviewcontroller 你必须使用“Segue”
设置从 Listviewcontroller 到 Detailviewcontroller 的新转场。
要设置一个新的转场按住 Ctrl 键并单击位于 Listviewcontroller 场景中的原型单元并将结果线拖到 Detailviewcontroller 场景中。
释放线后,从出现的菜单中选择Push选项。
情节提要将更新以显示表格视图和 Detailview 控制器之间的 segue 连接。
要打开一个Detailviewcontroller,有必要引用这个特定的segue。为此,请提供一个标识符。点击 Listviewcontroller 和 Detailviewcontroller 之间的 segue connection,显示 Attributes Inspector (View -> Utilities -> Show Attributes Inspector) 并更改 Identifier值为“Detailview”。
在Listviewcontroller添加下面的方法。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"Detailview"])
DetailViewController *detailViewController =
[segue destinationViewController];
// and add any other code which you want to perform.
欲了解更多信息See this link
在Tabbarcontroller 中添加navigationcontroller ......你可以像这个添加的图像一样。
我认为您需要查看此链接:In Storyboard with Navigation Controller and Tabbar Controller
【讨论】:
*** 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“找不到用于 segue 'Detailview' 的导航控制器。只有当源控制器由 UINavigationController 的实例管理时,才能使用 Push segues。' 我添加了这段代码来调用函数:[self performSegueWithIdentifier:@"Detailview" sender:self.view]; 添加了故事板转场,就像我在问题中编辑的图像一样 是您要转到 DetailViewController 的单元格上的“SecondViewController”。在其根目录中有一个导航控制器。 我的 SecondViewController 是我的 tableView 控制器。 DetailViewController 是我的视图控制器,当我单击 SecondViewController 中的单元格时,我想去的地方。如何检查 navigationcontroller 是否在其根目录中?以上是关于如何从 selectedRowAtIndexPath 推送 DetailViewController的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数
如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个