如何从 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

设置从 ListviewcontrollerDetailviewcontroller 的新转场。

要设置一个新的转场按住 Ctrl 键并单击位于 Listviewcontroller 场景中的原型单元并将结果线拖到 Detailviewcontroller 场景中。

释放线后,从出现的菜单中选择Push选项。

情节提要将更新以显示表格视图和 Detailview 控制器之间的 segue 连接。

要打开一个Detailviewcontroller,有必要引用这个特定的segue。为此,请提供一个标识符。点击 ListviewcontrollerDetailviewcontroller 之间的 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 适配器调用片段函数

如何从 Firebase 获取所有设备令牌?

如何直接从类调用从接口继承的方法?

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

如何从Mac从android studio中的fabric注销? [复制]

如何从设备中获取 PDF 文件以便能够从我的应用程序中上传?