gpt4 book ai didi

ios - 从应用程序委托(delegate)中推送 ViewController

转载 作者:行者123 更新时间:2023-11-29 12:37:30 26 4
gpt4 key购买 nike

我在 Xcode 5 中使用 Storyboard,它显示如下:

storyboard screenshot

我的要求是将 ViewController(VIEW1 或 VIEW2)从应用程序委托(delegate)插入 View 。本质上,屏幕上当前显示的是什么 View 并不重要——我只想在应用程序委托(delegate)接收到外部事件时显示一个 ViewController。

为了尝试实现这一点,我在我的应用委托(delegate)中同时引用了 TabBarCtrl-Products 和 NavCtrl-ProductA 的属性。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_tabBarProducts = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"sidTabBarProducts"];

NSArray *tabvcs = _tabBarProducts.viewControllers;
for (id controller in tabvcs){
if ([controller isKindOfClass:[VCNavControl_ProductA class]]) {
_navControllerProductA = controller;
break;
}
}
return YES;
}

推送VIEW2的app delegate方法是:

-(void)showVCVIEW2
{
VC_V2 *targetvc = nil;
targetvc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"sidView2"];
[[AppDelegate sharedInstance].navControllerProductA pushViewController:targetvc animated:NO];
}

当在调用 showVCVIEW2 时显示 VIEW1 时,这可以正常工作,但是当显示 ViewCtrl-ProductB 时,它不起作用。我可以看到 targetvc 的新实例已添加到 AppDelegate _navControllerProductA 的堆栈中,但它没有显示。

(关于应用委托(delegate)的 rootViewController 的设置,我在 VC-Splash 和 VC-Setup ViewCtrls 完成后将其设置为 _tabBarProducts)。

如果有人能告诉我如何实现这一目标,我将不胜感激。我怀疑我的问题源于在 TabBarCtrl 中有一个 NavCtrl,但我不知道解决这个问题的方法。

最佳答案

您的问题是您推送的导航 Controller 不在 View 层次结构中。

您可以尝试像这样设置 tabBarController 的选定索引:

[self.tabBarController setSelectedIndex:1];

关于ios - 从应用程序委托(delegate)中推送 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25902143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com