मैं अभी एक ही मुद्दे में भाग गया। मैं UIAlertController के लिए निजी हैडर (https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UIAlertController.h) को देखा और एक होनहार संपत्ति पाया: contentViewController
और यह रूप में accessoryView
UIAlertView, अंतर किया जा रहा है कि आप करने के लिए एक UIViewController सौंपने होंगे के लिए हुआ करता था निकला बिल्कुल वैसा ही होना करने के लिए UIView के बजाय यह संपत्ति।
UIViewController *v = [[UIViewController alloc] init];
v.view.backgroundColor = [UIColor redColor];
[alertController setValue:v forKey:@"contentViewController"];
कोड का वह टुकड़ा अलर्ट व्यू पर लाल दृश्य दिखाएगा! हैप्पी UIAlertController अनुकूलन;)
पीएस। यह एक निजी संपत्ति है लेकिन केवीसी का उपयोग करने में कोई समस्या नहीं होनी चाहिए, मुझे लगता है कि ऐप स्टोर के अनुसार, मुझे लगता है।
संपादित करें:
कुछ लोगों ने शिकायत की कि यह बहुत ही सुरक्षित नहीं है। यह एक सार्वजनिक एपीआई नहीं है, इसलिए हाँ, ऐप्पल इसे किसी भी रिलीज में बदल सकता है, जिससे यह विधि विफल हो जाती है।
यह सुनिश्चित करने के लिए कि यदि आपका होता है तो आपका पूरा ऐप क्रैश नहीं होता है, तो आप try
ब्लॉक में केवीसी कॉल को लपेट सकते हैं। संपत्ति में परिवर्तन अपने नियंत्रक सामग्री दृश्य वह दिखाई नहीं देगा, लेकिन यह भी दुर्घटना नहीं:
@try {
[alertController setValue:v forKey:@"contentViewController"];
}
@catch(NSException *exception) {
NSLog(@"Failed setting content view controller: %@", exception);
}
उत्पादन में इस विधि का उपयोग जोखिम भरा हो सकता है, और मैं महत्वपूर्ण अलर्ट के लिए यह सलाह नहीं देते।
मैं बजाय https://github.com/wimagguc/ios-custom-alertview इस लाइब्रेरी का उपयोग कर समाप्त हो गया है, और UIAlertController को छोड़ दिया। – kbjeppesen