Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.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
Ios 视图从不加载_Ios_Objective C - Fatal编程技术网

Ios 视图从不加载

Ios 视图从不加载,ios,objective-c,Ios,Objective C,我进入if([(NSString*)shortcutItem.localizedTitle isEqualToString:@“Store”])循环,我看到代码正在执行。但是PurchaseView.xib从不加载。我有类似的推送通知代码,它在我推送视图加载时起作用 任何帮助都将不胜感激。这里的问题是视图层次结构不好。您已将XIB文件的视图控制器添加到全新的UINavigationController,该控制器在视图层次结构中不存在。我相信你想这样做: - (void)application:(

我进入if([(NSString*)shortcutItem.localizedTitle isEqualToString:@“Store”])循环,我看到代码正在执行。但是PurchaseView.xib从不加载。我有类似的推送通知代码,它在我推送视图加载时起作用


任何帮助都将不胜感激。

这里的问题是视图层次结构不好。您已将
XIB
文件的视图控制器添加到全新的
UINavigationController
,该控制器在视图层次结构中不存在。我相信你想这样做:

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {

    MainView *Main=[[MainView alloc]initWithNibName:@"MainView" bundle:nil];
    // This module to collect metrics for Notification received, Notification displayed
    UINavigationController *NavBar=[[UINavigationController alloc] initWithRootViewController:Main];

    // react to shortcut item selections
    NSLog(@"A shortcut item was pressed. It was %@.", shortcutItem.localizedTitle);
    if([(NSString *)shortcutItem.localizedTitle isEqualToString:@"Store"])
    {
        PurchaseView *purchaseViewController = [[PurchaseView alloc] initWithNibName:@"PurchaseView" bundle:nil];
        [NavBar pushViewController:purchaseViewController animated:YES];
    }
}

同样,上面是一个假设的例子。您需要在视图层次结构中找到正确的
UINavigationController

BTW-标准命名约定规定变量和方法名称应以小写字母开头。只有类名应该以大写字母开头。您正在创建
NavBar
,但似乎没有将其作为视图控制器层次结构的一部分。您设置了导航控制器,但从未显示导航控制器。谢谢@rmaddy,我忘了添加[self.window setRootViewController:NavBar];
UINavigationController *navBar = (UINavigationController *) self.tabBarController.selectedViewController;
[navBar pushViewController:purchaseViewController animated:YES];