我有一个标签栏应用程序。我的要求是选择“扫描”选项卡扫描二维码并导航/跳转到另一个“列表”选项卡。 '{1}}中的viewControllers数组中都有'scan'和'list'选项卡。在引用this链接后,我认为我不需要设置委托,因为两个选项卡都已存在于层次结构。
我在下一行中收到此警告
didFinishLaunchingWithOptions
如果我注释掉上面的代码并添加
if(x)
{
listViewCntrl = [[ListViewController alloc] initWithNibName:@"ListViewController" bundle:nil];
listViewCntrl.getFlag = YES;
[self presentViewController:listViewCntrl animated:YES completion:Nil]; // I get the warning here
}
然后我将无法获得listViewController的子视图(设置标志以显示子视图),我需要在扫描后显示在列表选项卡中。
如果我添加
,应用程序崩溃[self.tabBarController setSelectedIndex:1];
那么如何在扫描后显示listView的子视图?
答案 0 :(得分:0)
ListViewController *listController = (ListViewController*)[self.tabController viewControllers][1];
listController.getFlag = 1;
[self.tabBarController setSelectedIndex:1];
问题是你正在创建一个全新的ListViewController
。你说你已经在标签控制器中有一个 - 你不需要一个新的。
你不能使用你的第三个选项,因为同样,两个ListViewController是不同的对象(它们可能属于同一个类,但它们指向不同的地址)。
答案 1 :(得分:0)
如果您使用故事板,可以试试这个:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
ViewController * destViewController = [storyboard instantiateViewControllerWithIdentifier:@"ViewControllerIdentifier"];
[self.navigationController pushViewController:destViewController animated:YES];
您必须在故事板中为控制器设置标识符。