通知后,从应用程序委托将视图控制器推送到选项卡栏中

Posted

技术标签:

【中文标题】通知后,从应用程序委托将视图控制器推送到选项卡栏中【英文标题】:pushing view controller inside a tab bar from app delegate, after a notification 【发布时间】:2010-06-06 13:29:49 【问题描述】:

我有一个带有标签栏的应用程序,每个标签内都有一个导航控制器。 我设置了一个通知,当它午餐时,用户可以通过按警报上的操作来获取午餐应用程序。

我想将用户重定向到其中一个控制器内的视图之一。

我试过这个:

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif 
    NSArray *data = [notif.userInfo objectForKey:@"todoDate"];
    NSInteger ind = [[data objectAtIndex:2] integerValue];

    QuickViewController *detailViewController ;
    detailViewController = [[QuickViewController alloc] initWithNibName:@"QuickViewController" bundle:nil];

    detailViewController.title = @"Edit";
    detailViewController.personName = [data objectAtIndex:0];
    detailViewController.DelitionDate=[data objectAtIndex:1];
    detailViewController.personCategory=@"NO Category";
    detailViewController.personID = ind r ;

    rootControler.selectedIndex = 1;
    [rootControler.tabBarController.selectedViewController.navigationController pushViewController:detailViewController animated:YES];

但是除了 :rootControler.selectedIndex = 1; 之外什么都没有发生(没有崩溃)

当我尝试: presentModalViewController

我得到了完美的视图,但没有导航控制器。

谢谢 沙尼

【问题讨论】:

【参考方案1】:

当您真的想以detailViewController 作为其根视图推送UINavigationController 时,听起来您正在推送detailViewController。试试这样的:

QuickViewController *detailViewController ;

detailViewController =
[[QuickViewController alloc] initWithNibName:@"QuickViewController"
                                      bundle:nil];

UINavigationController *navigationController =
[[UINavigationController alloc] initWithRootViewController:detailViewController];

[detailViewController release];

...

[rootControler.tabBarController.selectedViewController.navigationController 
pushViewController:navigationController animated:YES]

【讨论】:

感谢 jeff 现在它的工作,只需将最后一个命令更改为:[rootControler presentModalViewController:navigationController animated:YES];美好的一天 没问题。随意单击绿色复选标记将此答案标记为已接受;这将有助于您获得回答未来问题的机会。

以上是关于通知后,从应用程序委托将视图控制器推送到选项卡栏中的主要内容,如果未能解决你的问题,请参考以下文章

将 UIViewController 推送到导航堆栈时如何显示选项卡栏

当点击 FCM 推送通知时,如何在选项卡栏中打开特定的视图控制器?

iphone:需要在视图控制器中实现导航控制器,该控制器在选项卡栏中选择选项卡后出现

如何使用新数据重新加载或刷新选项卡栏控制器的选项卡栏中的数据?

iOS - 收到推送通知后显示视图

从容器视图中的选项卡栏控制器中的视图控制器委派信息