在导航视图控制器中加载特定视图
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];但这里只显示一个空的标签栏。以上是关于在导航视图控制器中加载特定视图的主要内容,如果未能解决你的问题,请参考以下文章