【问题标题】:How to push DetailViewController from selectedRowAtIndexPath如何从 selectedRowAtIndexPath 推送 DetailViewController
【发布时间】: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 是否存在?

标签: ios uitableview didselectrowatindexpath


【解决方案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 是否在其根目录中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多