2015-02-12 8 views
6

8 से पहले आईओएस के संस्करणों को मुझे UIActionsheet बनाने की अनुमति दी गई है जो बटन, कुछ स्थान, और फिर एक रद्द बटन दिखाएगा। कुछ इस तरह:UIAlertController

Desired Behavior

हालांकि iOS 8 में

जब मैं कोशिश करते हैं और एक ही नज़र मैं कुछ के साथ खत्म हो कि इस तरह दिखता है बनाने के लिए:

iOS 8 Behavior

कोड, iOS 8 में इस तरह दिखता है:

UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; 

[alertVC.view setTintColor:[UIColor copperColor]]; 

UIAlertAction* notifyViaPush = [UIAlertAction 
         actionWithTitle:@"Send Alert to my phone" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          [alertVC dismissViewControllerAnimated:YES completion:nil]; 
         }]; 
UIAlertAction* notifyViaEmail = [UIAlertAction 
         actionWithTitle:@"Notify me by email" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          [alertVC dismissViewControllerAnimated:YES completion:nil]; 
         }]; 
UIAlertAction* cancel = [UIAlertAction 
           actionWithTitle:@"Cancel" 
           style:UIAlertActionStyleCancel 
           handler:^(UIAlertAction * action) 
           { 
            [alertVC dismissViewControllerAnimated:YES completion:nil]; 
           }]; 

[alertVC addAction:notifyViaPush]; 
[alertVC addAction:notifyViaEmail]; 
[alertVC addAction:cancel]; 

[self presentViewController:alertVC animated:YES completion:nil]; 

मैं कैसे समूह मेरे बटन और कुछ जगह हो सकता है UIAlertController का उपयोग कर कार्रवाई और रद्द बटन के बीच?

उत्तर

9

लाइन alertVC.view.tintColor = [UIColor copperColor]; समस्या पैदा कर रही है, यह चेतावनी नियंत्रक के पूरे दृश्य को एक ही रंग बनाता है, आपकी पहली तस्वीर में रद्द बटन में सफेद पृष्ठभूमि होती है। इसे ठीक करने के लिए, इस क्रिया को फ़ंक्शन के अंत में ले जाएं, यानी, जब आप सभी क्रियाएं जोड़ लेंगे।

+0

यह समस्या को हल करता है! क्या आप मुझे समझने में मदद कर सकते हैं कि टिंट रंग क्यों सेट करना पूरे दृश्य को एक साथ समूहीकृत करने का कारण बनता है? – nixterrimus

+1

इसके लिए आपको UIAlertController को उप-वर्ग करना होगा, पुरानी शैली यह है: >, <_UIAlertControllerActionView: 0x7fa73bdaf120; फ्रेम = (0 9 6; 35 9 44); एक्शन = >, इसमें एक 12pt अंतर है, जो स्पष्ट रंग है, पहले टिंटकलर सेट करना अंतराल को गायब कर देता है, नई शैली 3 कोशिकाओं के साथ एक संग्रहदृश्य है, प्रत्येक ऊंचाई 44 है। – gabbler

+1

पुरानी शैली में 2 कोशिकाओं के साथ एक संग्रहदृश्य है, और एक अंतर, मुझे यकीन नहीं है कि यह कैसे हुआ। आप स्पष्टीकरण के लिए और अधिक जांच कर सकते हैं। – gabbler

4

मेरे लिए यह पर शैली को UIAlertActionStyleCancel पर सेट करने पर काम करता है।

नीचे दिए गए कोड में, actionUIAlertAction ऑब्जेक्ट है और controller स्टाइल एक्शन शीट के साथ UIAlertController है।

UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { 
      self.tabBarView.selectedIndex = 1; 
      [self.tabBarView setSelectedIndex:self.tabBarView.selectedIndex]; 
     }]; 
     [controller addAction:action]; 
     [controller addAction:action2]; 
संबंधित मुद्दे