ios - Changing the background image of a UITableViewController Master of a UISplitViewController in Landscape orientation -


मेरे पास एक साधारण ऐप है जो UITableViewController s, UIViewController एस और UISplitViewController एस मैं लैंडस्केप अभिविन्यास को मेरे आईपैड ऐपेशन में ला रहा हूं।

मैंने इसे कॉन्फ़िगर किया है ताकि पोर्ट्रेट में, मास्टर व्यू एक UIBarButtonItem के पीछे छिपा हुआ है और लैंडस्केप में, मास्टर और विस्तार दृश्य दोनों ही हैं दिखा रहा है। मैंने अपने ऐप के अंदर कस्टम थीम बनाए हैं जो पृष्ठभूमि को बदलता है और चयनित विषय से मेल करने के लिए UINavigationBar

मुद्दा

जब लैंडस्केप और थीम चयन पृष्ठ में, मास्टर व्यू मेनू ( UITableViewController ) और विस्तार थीम चयन पृष्ठ है ( UICollectionView )। यदि मैं कोई विषय चुनता हूं, तो UICollectionView नई थीम का प्रतिनिधित्व करने के लिए इसे पृष्ठभूमि में अद्यतन करता है हालांकि, मास्टर व्यू इसकी थीम को अपडेट नहीं करता है यह मुद्दा है

पोर्ट्रेट मोड में, मास्टर को अपडेट किया जाता है क्योंकि इसमें viewWillAppear है, मेरे पास changeAppThemes विधि है:

  - (शून्य) changeAppThemes {एनएसएलॉग (@ "यह कह रहा है"); Self.selectedTheme = [[NSUserDefaults मानक उपयोगकर्ता डीफॉल्ट] objectForKey: @ "थीम"]; यदि ([स्वयं। चयनित थीम एक्वलटॉस्ट्रिंग: @ "मिस्टिकिकल"]) {थीममैनेजर * थीममैनेजर = [थीममैनेजर साझा प्रबंधक]; ThemeManager.backgrounds = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "PurplepinkIPAD.png"]]; Self.tableView.backgroundView = themeManager.backgrounds; UIImage * navBackgroundImage = [UIImage imageNamed: @ "Purplepinknav.png"]; [[UINavigationBar उपस्थिति] setBackground छवि: navBackgroundImage forBarMetrics: UIBarMetricsDefault]; }   

मेरे didSelectMethod के भीतर UICollectionView , मैंने changeAppThemes विधि को कॉल किया है:

<पूर्व> [[NSUserDefaults मानक उपयोगकर्ता डीफॉल्ट] सेट ऑब्जेक्ट: स्वयं। चयनित थीम forKey: @ "थीम"]; [[NSUserDefaults मानक यूसर डीफॉल्ट्स] सिंक्रनाइज़ करें]; [आत्म changeAppThemes]; MasterTableViewController * मास्टर = [[MasterTableViewController alloc] init]; [मास्टर परिवर्तन APPThemes];

यह लैंडस्केप मोड में काम कर रहा है क्योंकि NSLog " इसे कॉलिंग हो रहा है " प्रदर्शित किया जाता है। हालांकि, थीम बदलते नहीं हैं।

अगर मैं पोर्ट्रेट मोड और लैंडस्केप पर वापस बदल जाता हूं, तो थीम को अपडेट किया जाता है।

ऐसा लगता है कि यह अद्यतन करने के लिए एक प्रमुख तत्व को गुम है, भले ही मैं changeAppThemes विधि को UICollectionView से कॉल कर रहा हूं।

इस पर कोई मार्गदर्शन वास्तव में सराहना की जाएगी

मुझे लगता है कि आप MasterTableViewController को विस्तार से देख सकते हैं, यदि आप डिफ़ॉल्ट सेटिंग के साथ एक UISplitViewController प्रोजेक्ट बनाते हैं Xcode के माध्यम से।

<पूर्व> NSArray * viewControllers = self.splitViewController.viewControllers; UINavigationController * नियंत्रक = दृश्य नियंत्रक [0]; MasterViewController * masterController = (MasterViewController *) नियंत्रक .topViewController; [मास्टरकंट्रोलर changeAppThemes];

कृपया सुनिश्चित करें कि आप अपने बिल्टिव वियंट कंट्रोलर के दृश्य नियंत्रकों में मास्टर कंट्रोलर को एक नया बनाने के बजाय प्राप्त करें, नया एक विभक्त दृश्य नियंत्रक के अंदर नहीं है।


Comments