【发布时间】:2015-02-10 19:47:37
【问题描述】:
这可能很容易实现,但我是 iOS 编程新手,我似乎被卡住了。
所以,基本上,我有一个选项卡式应用程序。我决定除了标签栏之外还需要一个导航栏。为此,我放置了标签栏控制器,然后添加了我的视图控制器并嵌入到每个视图控制器的导航控制器中,然后将其连接到标签栏。
我在故事板中的层次结构有点像这样:
- 视图控制器
- 标签栏控制器
- 导航控制器
- 视图控制器
- 导航控制器
- 视图控制器
- 导航控制器
- 标签栏控制器
我被困在这里的部分是尝试将数据从第一个 View Controller 传递到任何其他 View Controller 时。在添加导航控制器之前,我使用 prepareForSegue 方法来传递数据,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"logged"])
{
UITabBarController *tabar=segue.destinationViewController;
SecondViewController *svc=[tabar.viewControllers objectAtIndex:1];
svc.groupArray = [(NSArray*)sender objectAtIndex:0];
svc.userArray = [(NSArray*)sender objectAtIndex:1];
svc.taskArray = [(NSMutableArray*)sender objectAtIndex:2];
svc.selfArray = [(NSMutableArray*)sender objectAtIndex:3];
[tabar setSelectedIndex:1];
}
}
如您所见,我将数据传递给我的第二个视图控制器并使用 performSegueWithIdentifier 方法将标签栏索引设置为 1,因为我希望打开第二个页面。所有这一切都工作得很好,直到我将导航控制器引入我的代码,因为我想要导航栏。那时一切都崩溃了。如果我尝试按原样运行代码,应用程序将崩溃并在控制台中显示以下输出:
[UINavigationController setGroupArray:]: 无法识别的选择器发送到 实例 0x7ffa6acec620
*** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'-[UINavigationController setGroupArray:]: unrecognized selector sent to instance 0x7ffa6acec620'
我尝试过修改代码,但似乎没有任何效果。我只是很困惑,也许正确方向的提示会对我有所帮助。
【问题讨论】:
标签: ios objective-c uinavigationcontroller storyboard uitabbarcontroller