Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从应用程序委托调用PushViewController时不工作_Iphone_Ios_Uitabbarcontroller_Uiapplicationdelegate_Pushviewcontroller - Fatal编程技术网

Iphone 从应用程序委托调用PushViewController时不工作

Iphone 从应用程序委托调用PushViewController时不工作,iphone,ios,uitabbarcontroller,uiapplicationdelegate,pushviewcontroller,Iphone,Ios,Uitabbarcontroller,Uiapplicationdelegate,Pushviewcontroller,我有一个基于标签栏的应用程序。当应用程序激活时,我希望它转到第二个选项卡栏(SecondViewController),然后打开DetailViewController 我是这样做的: AppDelegate.m - (void)applicationDidBecomeActive:(UIApplication *)application { self.tabBarController.selectedViewController = [self.tabBarController.vie

我有一个基于标签栏的应用程序。当应用程序激活时,我希望它转到第二个选项卡栏(SecondViewController),然后打开DetailViewController

我是这样做的:

AppDelegate.m

- (void)applicationDidBecomeActive:(UIApplication *)application {
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];

    SecondViewController *secondView = [[SecondViewController alloc] init];
    [secondView openDetailView];
    [secondView release];
-(void)openDetailView{
     NSLog(@"open detail view");

     DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
            [[self navigationController] pushViewController:detailViewController animated:YES];
}
}

SecondViewController.m

- (void)applicationDidBecomeActive:(UIApplication *)application {
    self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:1];

    SecondViewController *secondView = [[SecondViewController alloc] init];
    [secondView openDetailView];
    [secondView release];
-(void)openDetailView{
     NSLog(@"open detail view");

     DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
            [[self navigationController] pushViewController:detailViewController animated:YES];
}
openDetailView()确实运行(正如我看到的nslog工作),但是DetailView没有被推送?我知道代码是有效的,因为我在一个iAction中有相同的代码,它推送detailView。问题与从AppDelegate(或切换选项卡)调用有关


那么,当我从应用程序代理调用视图时,为什么视图没有被推送?非常感谢您的帮助

您将detailViewController推送到secondView的导航堆栈,但是secondView不在任何位置

试试这个

SecondViewController *secondView ...

[self.tabBarController pushViewController:secondView animated:YES];  <==

[secondView openDetailView];
SecondViewController*secondView。。。

[self.tabbar控制器pushViewController:secondView动画:是];使用以下代码检查是否正在获取导航控制器的值-UINavigationController navController=[(MyAppDelegate)[[UIApplication sharedApplication]delegate]navigationController];另外,如果您有一些IBOutlet,请确保它们连接正确。
[self-navigationController]
很可能是
nil
,因为secondViewController未分配给任何navigationController(至少从您向我们显示的代码中)。