2014-10-07 3 views
7

इस प्रतिनिधि विधि के लिए मेरा मानक कार्यान्वयन निम्न है। मैं बस नेविगेशन बटन शुरू करता हूं और स्थानीय रूप से बटन और पॉपओवर को सहेजता हूं।बहिष्कृत विधि को प्रतिस्थापित करने के लिए कैसे करें splitViewController: willHideViewController: withBarButtonItem: forPopoverController:

- (void) splitViewController: (UISplitViewController *) splitController 
     willHideViewController: (UIViewController *)  viewController 
      withBarButtonItem: (UIBarButtonItem *)  barButtonItem 
     forPopoverController: (UIPopoverController *) popoverController 
{ 
    // Set the button to open the PopOver 
    barButtonItem.title = viewController.title; 
    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 

    // Save the ref to the default left navigation button 
    _masterButton = barButtonItem; 

    // Save the ref to the PopOver 
    _masterPopOver = popoverController; 
} 

iOS 8 से इस विधि बहिष्कृत हो गई है और एप्पल प्रलेखन कहते हैं: बजाय विधि:

splitViewController लागू: willChangeToDisplayMode।

लेकिन नई विधि के तर्कों पदावनत विधि के साथ कोई संबंध नहीं है! मुझे लगता है मुझे खुद को एक बटन और एक पॉपओवर बनाना है?

क्या किसी ने पहले से ही इस पॉप-अप व्यवहार को लागू करने के लिए पुनः कोडिंग किया है?

आपकी मदद

+0

क्या आपको इस मुद्दे का कोई जवाब मिला है? एक ही चीज़ की तलाश में! – lionserdar

+1

अभी तक नहीं। मुझे लगता है मुझे अपने आप से काम करना होगा। यह मेरे लिए बहुत जरूरी नहीं है लेकिन जैसे ही मैं काम करता हूं, मैं इसे – PatrickV

उत्तर

11

displayModeButtonItem पर एक नजर डालें के लिए धन्यवाद। यह बहिष्कृत विधि से barButtonItem के समान ही है। निम्नलिखित तरीके से विधि: willChangeToDisplayMode:

आप नए splitViewController का उपयोग करके अपने उदाहरण refactor कर सकते हैं

- (void)splitViewController:(UISplitViewController *)svc 
    willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode { 

    if (displayMode == UISplitViewControllerDisplayModePrimaryHidden) { 
     self.navigationItem.leftBarButtonItem = svc.displayModeButtonItem; 
    } 
} 
+1

पर रखूंगा लेकिन कोई 'बाएंबर्टनइटम' परिभाषित नहीं है। तब कैसे करें? –

+0

धन्यवाद - कोड पूर्ण हो गया है, बस अपने विस्तार दृश्य में कॉपी और अतीत करें। –

1

यह सिकंदर के जवाब देने के लिए एक विस्तार है। सिहाद की टिप्पणी को कवर करने के लिए: कोड की आखिरी पंक्ति बाएंबर्टबटन इटिम बनाता है और इसे नीली "<" बटन बनाता है जो मास्टर व्यू कंट्रोलर खोल देगा।

मैंने अभी विज़िट किया है हाइडव्यू कंट्रोलर और मेरे विस्तार दृश्य से WillShowViewController नियंत्रक और अलेक्जेंडर के कोड को काट और चिपकाया। पहली बार काम किया।

तब मुझे पता चला कि अगर मैंने चित्र में ऐप शुरू किया है तो यह तब तक काम नहीं करता जब तक कि मैं परिदृश्य नहीं चला और चित्र पर वापस आ गया। स्पष्ट रूप से विधि को अभिविन्यास में परिवर्तन तक नहीं बुलाया जाता है।

तो मैं अपने विस्तार ViewController की मेरी viewDidLoad विधि में इस कोड को जोड़ा गया है और यह ठीक काम किया:

 //Set up the splitview controller 
    if (self.splitViewController.displayMode == UISplitViewControllerDisplayModePrimaryHidden) { 
     self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;} 

splitViewController अपने विस्तार ViewController का एक गुण है कि वहाँ आप का उपयोग करने के लिए होना चाहिए।

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

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