在导航视图控制器中加载特定视图

Posted

技术标签:

【中文标题】在导航视图控制器中加载特定视图【英文标题】:Load specific view in Navigation View Controller 【发布时间】:2013-10-04 17:01:53 【问题描述】:

我有一个标签栏控制器,里面有 3 个视图控制器和一个导航视图控制器。 该导航视图控制器有一个表格视图控制器和一个详细视图。

在我的第一个视图控制器(第一个选项卡)中有三个按钮。我希望第一个按钮在导航控制器中加载详细视图。 (如下图所示)

Storyboard

我怎样才能做到这一点?

我尝试调用在 LocationsTableViewController 中执行转场的方法,但这给了我错误“Receiver () has no segue with identifier 'addLocation'”。虽然肯定存在 segue "addLocation"。

StartViewController中连接按钮的方法:

- (IBAction)addLocationView:(id)sender 

    LocationsTableViewController *LTVC = [[LocationsTableViewController alloc] init];
    [LTVC addLocation];


LocationsTableViewController:

-(void)addLocation

    [self performSegueWithIdentifier: @"addLocation" sender: self];

【问题讨论】:

【参考方案1】:

您的“addLocation”转场是从位置表视图控制器到添加位置视图控制器,因此转场存在于 LocationsTableViewController 上。那是对的。但是,如果您当前的视图控制器不是 LocationsTableViewController,则调用该 segue 是没有意义的。

你有几个选择:

    故事板选项 #1:创建从 StartViewController 到 AddLocationViewController 的新转场,并在 addLocationView: 中执行该转场。 故事板选项 #2:从按钮到 AddLocationViewController 进行新的转场,并删除您的 IBAction。单击按钮时,情节提要将自动调用该 segue。 编程选项:实例化一个新的 AddLocationViewController 并将其推送到导航堆栈:[self.navigationController pushViewController:[[AddLocationViewController alloc] init] animated:YES]

【讨论】:

您好,我尝试了选项 1 和 2,但只显示视图,没有标签栏和导航栏。由于 self.navigationController,选项 3 不起作用。 Startview 不是导航控制器。我试过 LocationsViewController *LVC = [[LocationsViewController alloc] init]; [self presentViewController:LVC 动画:YES 完成:Nil]; [LVC.navigationController pushViewController:[[AddLocationViewController alloc] init] animated:YES];但这里只显示一个空的标签栏。

以上是关于在导航视图控制器中加载特定视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中加载初始视图控制器?

在视图内创建导航控制器

快速在视图控制器中加载集合视图控制器

在标签栏控件中加载视图控制器

在 xib 文件中加载视图控制器

iphone - 在视图控制器中加载表格视图时出现问题