Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.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 接收推送通知时打开特定视图_Iphone_Push Notification_Navigationcontroller - Fatal编程技术网

Iphone 接收推送通知时打开特定视图

Iphone 接收推送通知时打开特定视图,iphone,push-notification,navigationcontroller,Iphone,Push Notification,Navigationcontroller,我将UITableView作为我的rootViewController并用解析的RSS填充该表(有一个Parser类,其中myrootViewController是它的委托)。在rootViewController中,我有刷新RSSrefreshData的方法,我将检索到的数据保存在静态MutableArraystaticItems中: 单击tableView单元格中的一个单元格时,detailView将被推送到navigationController上,同时(在选择单元格(行)时)我创建一个字

我将
UITableView
作为我的
rootViewController
并用解析的RSS填充该表(有一个
Parser
类,其中my
rootViewController
是它的委托)。在
rootViewController
中,我有刷新RSS
refreshData
的方法,我将检索到的数据保存在静态
MutableArray
staticItems中:

单击
tableView
单元格中的一个单元格时,
detailView
将被推送到
navigationController
上,同时(在选择单元格(行)时)我创建一个字典
item
并将其传递给
detailView
。在该字典中,我传递来自
staticItems
positionInArray
(所选单元格的索引)的值。通过这种方式,我可以显示新闻文本,并跟踪新闻在新闻数组中的位置,以实现幻灯片prev/next

现在,我启用了推送通知,在收到一个推送通知后,我的应用程序返回前台,但具有上次关闭应用程序时打开的视图

我想通过重新解析(刷新)RSS并呈现最后一条新闻(Iteem[0]),在detailView中呈现最后一条新闻

因此,我希望得到以下结果:调用
[rootController refreshData]
,然后选择单元格中的第一项并在
详细视图中打开它

我一直在玩委托方法
didReceiveMemotentification
,但我找不到让它工作的方法。我尝试创建新的
rootController
,但随后我将其堆叠在现有的控制器上:(


请与我分享您的想法:)

首先,这个问题与推送通知根本没有关系。更多的问题是如何从应用程序委托中的任意位置访问视图控制器

最好(可能也是唯一)的办法是手动保留对相关视图控制器实例的引用

我假设您使用一个
UINavigationController
,其中根是您的列表,然后将详细视图控制器推到它上面。在应用程序代理中保留对此导航控制器的引用。添加一个
@属性(非原子,保留)UINavigationController*mainNavController到您的应用程序代理。创建导航控制器时,将其分配给应用程序代理以使其具有引用

MyAppDelegate *ad = ((MyAppDelegate *)[UIApplication sharedApplication].delegate);
ad.mainNavController = theNavController;
如果您在应用程序委托本身中创建导航控制器,则显然只需执行以下操作:

self.mainNavController = theNavController;
然后,当您收到推送通知时,只需直接操作导航控制器即可

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    // Do whatever you need to do in order to create an instance of your
    // detail view controller
    MyDetailViewController *vc = [MyDetailViewController magicalStuff:userInfo];

    // Add the detail view controller to the stack, but keep the root view
    // controller.
    UIViewController *root = self.mainNavController.topViewController;
    NSArray *vcs = [NSArray arrayWithObjects:root, vc, nil];
    [self.mainNavController setViewControllers:vcs animated:YES];
}

然后,通过滑动导航控制器将动画设置为
MyDetailViewController
,返回按钮将带您进入列表。

@ViTo Brothers Apoyan:我的问题已编辑(已删除,您好,最后谢谢),现在我的斜体不再是斜体。我格式化错了吗?thnx