2012-11-16 13 views
7

प्राप्त मैं स्टोरीबोर्ड का उपयोग कर रहा है, और मैं हमेशा एक ही दृश्य खोलने के लिए चाहते हैं जब उपयोगकर्ता, दूरस्थ धक्का सूचनाएं प्राप्त करता है यहां तक ​​कि एप्लिकेशन पृष्ठभूमि या खोला है। स्टोरीबोर्ड में प्रारंभिक दृश्य नियंत्रक सेट के बाद मुझे जो दृश्य दिखाना है, वह चार विचार है।खुला दृश्य नियंत्रक जब दूरस्थ पुश अधिसूचना

How can I show a modal view in response to a notification as a new window? (no parent vc)

Open a specific tab/view when user receives a push notification

तो यहाँ मेरी कोड है:: मैं इस पोस्ट पढ़

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[locationViewController setViewControllers:]: unrecognized selector sent to instance 0x42ccd0' 
:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 

    UINavigationController *navController = (UINavigationController *)self.window.rootViewController; 
    notificacionViewController *menu = [navController.storyboard instantiateViewControllerWithIdentifier:@"notificacion"]; 

    // First item in array is bottom of stack, last item is top. 
    navController.viewControllers = [NSArray arrayWithObjects:menu,nil]; 

    [self.window makeKeyAndVisible]; 


} 

लेकिन जब मैं अधिसूचना, इस त्रुटि के साथ ऐप्लिकेशन क्रैश प्राप्त

locationViewController दृश्य विवाद है स्टोरीबोर्ड में प्रारंभिक के रूप में सेटर।

बहुत धन्यवाद।

+1

मान लीजिए, "HomeViewController" स्टोरीबोर्ड में प्रारंभिक दृश्य नियंत्रक है, और, एक बटन पर क्लिक अब के बाद आप पुश विधि द्वारा "SecondViewController" में हैं। अब, आपको पुश अधिसूचना मिल रही है। आप "NotificationViewController" धक्का या यह रीति से पेश करने के लिए करना चाहते हैं? –

+0

आम तौर पर, इसलिए मुझे आपकी स्पष्टीकरण को समझने के लिए निश्चित नहीं है, आप स्टैक को तब तक धक्का देने का सुझाव देते हैं जब तक मुझे नोटिफिकेशन नहीं मिलता है? धन्यवाद – theomen

उत्तर

19

निम्नलिखित कोड का प्रयास करें:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    UINavigationController *navController = (UINavigationController *)self.window.rootViewController; 
    NotificationViewController *notificationViewController = [[NotificationViewController alloc] init]; 
    [navController.visibleViewController.navigationController pushViewController:notificationViewController];  
} 
+0

बहुत धन्यवाद। यह मुझे यह त्रुटि देता है: 'UINavigationController' के लिए कोई दृश्य @interface 'लाइन के लिए चयनकर्ता' pushViewController: 'घोषित करता है [navController.visibleViewController.navigationController pushViewController: notificationViewController]; – theomen

+2

कृपया इसे आज़माएं। [navController.visibleViewController.navigationController pushViewController: अधिसूचना दृश्य नियंत्रक एनिमेटेड: हाँ]; –

2

मेरे कोड जवाब मैंने देखा है से थोड़ा अलग है।

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; 

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; 

    IniciarSliderViewController *controller = (IniciarSliderViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"MenuSlider"]; 

    [navigationController pushViewController:controller animated:YES]; 

1.- का दृष्टांत डी navigationController: तथ्य यह है कि केवल कोड है कि मुझे फार्म में काम करता है, तो निम्न है। आमतौर पर अधिकांश मामलों में rootviewcontroller, लेकिन सभी

में नहीं 2.- स्टोरीबोर्ड इन्स्तांत। Usuarlly MainStoryboard

के रूप में चिह्नित 3.- अपने विशिष्ट दृश्य नियंत्रक इन्स्तांत। आप अपने विशेष मामले

4. पुश के रूप में आपको क्या करना चाहिए क्योंकि आप निर्धारित किया है कि आप सभी की जरूरत के लिए अनुकूलित चाहिए

+1

आप उस मामले में अगर एप्लिकेशन को है और चल रहा है और उपयोगकर्ता गहरी अनुप्रयोग के अंदर है कैसे करना होगा? – Andy

संबंधित मुद्दे