2015-09-30 57 views
0
- (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]; 
    } 
} 

我進入如果([(的NSString *)shortcutItem.localizedTitle isEqualToString:@ 「商店」])的環和我看到的代碼執行。但是PurchaseView.xib從不加載。我有推送通知的類似代碼,它在我推送視圖加載時起作用。查看從來沒有加載

任何幫助,將不勝感激。

+0

順便說一句 - 標準命名約定表明變量和方法名稱應該以小寫字母開頭。只有類名應該以大寫字母開頭。 – rmaddy

+0

您正在創建'NavBar',但似乎並未將其作爲視圖控制器層次結構的一部分。 –

+0

您設置了您的導航控制器,但是您從不顯示導航控制器。 – rmaddy

回答

2

這裏的問題是錯誤的視圖層次結構。您將您的XIB文件的視圖控制器添加到全新的UINavigationController,該視圖在視圖層次結構中不存在任何位置。我相信你想要這樣做:

UINavigationController *navBar = (UINavigationController *) self.tabBarController.selectedViewController; 
[navBar pushViewController:purchaseViewController animated:YES]; 

再次,以上是一個假設的例子。您需要在視圖層次結構中找出正確的UINavigationController