2015-12-20 13 views
8

नहीं है मैं निम्न पदानुक्रम के साथ एक बहु दृश्य अनुप्रयोग है:प्रयास विंडो में पदानुक्रम

छप -> नेविगेशन नियंत्रक -> तालिका दृश्य नियंत्रक -> सेटिंग्स नियंत्रक देखने

स्पलैश एप्लिकेशन एंट्री पॉइंट है और इसलिए रूट व्यू कंट्रोलर बन जाता है।

आवेदन: जब मैं नियंत्रक देखने सेटिंग्स पर एक कार्रवाई के माध्यम से बैंड के लिए एक टाइल जोड़ने का प्रयास करते हैं, मैं एक डिबगर चेतावनी मिलती है [1929: 1,000,746] चेतावनी: 0x15f0575b0 > < SplashViewController पर: < MSBAddTileDialogViewController_iOS पेश करने के लिए प्रयास : 0x15dd597b0 > जिसका विचार विंडो पदानुक्रम में नहीं है!

यह MSBClient.tileManager addTile:completionHandler: पर कॉल के तुरंत बाद होता है। कॉल कभी वापस नहीं आता है, कोई त्रुटि उत्पन्न नहीं होती है।

इस बारे में कोई सुझाव कैसे प्राप्त करें?

+1

मैं केवल आईओएस विकास में डबिल हूं इसलिए मैं शायद आपके प्रश्न का उत्तर सीधे नहीं दे सकता। जब आप बैंड एसडीके का उपयोग कर टाइल जोड़ते हैं तो यह उपयोगकर्ता को एक पुष्टिकरण संवाद दिखाने का प्रयास करेगा। ऐसा हो सकता है कि नियंत्रकों का आपका ढेर अच्छी तरह से जाल नहीं करता है कि बैंड एसडीके उचित नियंत्रक को कैसे ढूंढता है जिस पर अपना स्वयं का व्यू कंट्रोलर जोड़ना है। आपको अपनी सेटिंग्स के अधिक स्निपेट प्रदान करने की आवश्यकता हो सकती है यह देखने के लिए कि कैसे/कब लोड/प्रोजेक्ट प्रक्रिया में आप टाइल जोड़ने का प्रयास कर रहे हैं। –

+0

@ फिल-हॉफ-एमएसएफटी, इसे देखने के लिए धन्यवाद। यहां [एक नमूना] है (http://mikeradin.com/ModifiedBandTileEvent.zip)। मैंने आईओएस एसडीके डाउनलोड के साथ शामिल एक उदाहरण को संशोधित करने के लिए एक अंतरिम दृश्य शामिल करने के लिए संशोधित किया, जिससे उपयोगकर्ता इंटरफ़ेस रूट व्यू कंट्रोलर नहीं बना। वही समस्या मौजूद है। – chortik

+0

यह एक ज्ञात मुद्दा है क्योंकि एसडीके रूट व्यू कंट्रोलर पर पुष्टिकरण संवाद प्रस्तुत करने का प्रयास कर रहा है, भले ही यह दृश्य पदानुक्रम का हिस्सा न हो। अब के लिए एकमात्र कामकाज यह सुनिश्चित करना है कि रूट व्यू कंट्रोलर addTile बनाते समय प्रस्तुत हो रहा है: कॉल करें। –

उत्तर

0

आपको रूट व्यू कंट्रोलर प्राप्त करने और उस दृश्य नियंत्रक से एक सेग्यू करने की आवश्यकता होगी। यह डीबग करने के लिए काफी निराशाजनक हो सकता है लेकिन इस विषय के बारे में यहां कुछ जवाब दिए गए हैं।

यहां कुछ कोड है जिसे मैंने रूट व्यू कंट्रोलर से एक स्क्रीन पर एक सेग्यू करने के लिए उपयोग किया है जब ऐप को पुश अधिसूचना प्राप्त होती है।

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"YourStoryboard" bundle:nil]; 

YourViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"viewcontrolleridentifier"]; 

UIViewController *top = [UIApplication sharedApplication].keyWindow.rootViewController; 

[top presentViewController:viewController animated:YES completion: nil]; 

यहाँ तेज में एक ही कोड:

let storyboard = UIStoryboard.init(name: "YourStoryboard", bundle: nil) 

let viewController = storyboard.instantiateViewController(withIdentifier: "viewcontrolleridentifier") 

let top = UIApplication.shared.keyWindow?.rootViewController 

top?.present(viewController, animated: true, completion: nil) 

आप अपने स्टोरीबोर्ड में दृश्य नियंत्रकों पहचानकर्ता सेट सुनिश्चित करें।

संपादित करें * दृश्य नियंत्रक आप तक पहुँच रहे हैं एक नेविगेशन नियंत्रक के भीतर सन्निहित है कि आप ऊपर के कोड,

उद्देश्य सी में संशोधन करने की आवश्यकता होगी, तो:

UIViewController *top = [self topMostController]; 

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

[top presentViewController:navigationController animated:YES completion: nil]; 

स्विफ्ट:

let top = UIApplication.shared.keyWindow?.rootViewController 

let navigationController = UINavigationController.init(rootViewController: viewController) 

top?.present(navigationController, animated: true, completion: nil) 
संबंधित मुद्दे