2010-12-05 14 views
5

क्या आईफोन ऐप की UIActionSheet में 1 से अधिक लाल "विनाशकारी बटन" रखने का कोई तरीका है?एकाधिक लाल/विनाशकारी बटन UIActionSheet

मुझे एक ही एक्शन शीट में अलग-अलग स्पष्ट विकल्प होने की आवश्यकता है, जहां वह सबकुछ हटा देता है और जहां यह कम हो जाता है, इसलिए दोनों को लाल होने की आवश्यकता होती है।

+2

बल्कि UIActionSheet को संशोधित करने की कोशिश की तुलना में, मैं यहाँ अपने इंटरफेस डिजाइन पर पुनर्विचार चाहते हैं। सूची में एक से अधिक विध्वंसक विकल्प होने से भ्रमित हो रहा है और मंच मानकों के खिलाफ चला जाता है। शायद आप अपने समाशोधन कार्यों को आसानी से पूर्ववत कर सकते हैं, जिससे उन्हें अनौपचारिक बना दिया जा सकता है। –

+0

यह एक स्पष्ट इतिहास बटन है इसलिए इसे पूर्ववत नहीं किया जाना चाहिए। मुझे लगता है कि मेरे पास 2 विकल्प के साथ एक विनाशकारी के रूप में एक एक्शन शीट हो सकती है और फिर एक विनाशकारी बटन के साथ एक और एक्शन शीट के साथ पुष्टि के लिए पूछें। लेकिन ऐसा नहीं है कि उपयोगकर्ता फोन को परेशान कर रहा है। –

उत्तर

2

iPhone एक ऐसी ही में उपयोग करने के लिए मैं सिर्फ UIActionSheet के लिए एक सरल अनुकूलन प्रतिस्थापन बनाया मामला। यह मानक उपस्थिति का उपयोग नहीं करता है, लेकिन इसे बदला जा सकता है। शायद यह आपके लिए किसी भी प्रयोग का है।

https://github.com/4marcus/WMActionSheet

2

इस प्रश्न का पोस्टर जो आप चाहते हैं उसे प्रबंधित करना प्रतीत होता है ... अगर मैं आपको सही ढंग से समझता हूं।

Is using subviews in Alert undocumented

संपादित करें:

मैं मैं UIActionSheet के लिए पहली बार खोजा गया कसम। वास्तव में। http://www.nearinfinity.com/blogs/andrew_homeyer/display_a_custom_uiview_like_a.html

+1

मैं UIAlertView की बजाय UIActionSheet की तलाश में हूं, लेकिन लिंक के लिए धन्यवाद। –

+0

इसके बारे में खेद है। अद्यतन उत्तर – griotspeak

1

मानक UIActionSheet पर ऐसा करने का कोई समर्थित तरीका नहीं है। आप यहाँ लोगों की तरह ढाल बटन का उपयोग कर अपने खुद के "कार्रवाई चादर" प्रतिस्थापन बना सकते हैं:

http://iphonedevelopment.blogspot.com/2010/05/gradient-buttons-yet-again.html

मैं किसी को अधिक कस्टमाइज़ लगभग वैसी ही कार्रवाई चादर प्रतिस्थापन बनाया है, लेकिन मैं एक का पता नहीं है उम्मीद करेंगे मेरे सर के ऊपर से चला गया।

0

मैं इस कोशिश की इससे पहले कि मैं griotspeak अद्यतन जवाब देखा:

SEL getTitle = NSSelectorFromString(@"title"); 
SEL getBackground = NSSelectorFromString(@"background"); 
SEL setBackground = NSSelectorFromString(@"setBackgroundImage:"); 
SEL setTitleColor = NSSelectorFromString(@"setTitleColor:"); 
UIImage *redImage; 
UIColor *titleColor; 
UIColor *shadowColor; 
for (NSObject *object in [action subviews]) { 
    if ([[NSString stringWithFormat:@"%@", [object class]] isEqualToString:@"UIThreePartButton"]) { 
     if ([[object performSelector:getTitle] isEqualToString:@"Clear all"]) { 
      redImage = [object performSelector:getBackground]; 
      titleColor = [object performSelector:@selector(titleColor)]; 
      shadowColor = [object performSelector:@selector(shadowColorForState:) withObject:0]; 
      shadowOffset = [object performSelector:@selector(shadowOffset)]; 
     } 
     if ([[object performSelector:getTitle] isEqualToString:@"Clear all except this month"]) { 
      [object performSelector:setBackground withObject:redImage]; 
      [object performSelector:setTitleColor withObject:titleColor]; 
      [object performSelector:@selector(setShadowColor:) withObject:shadowColor]; 
      //[object performSelector:@selector(setShadowOffset:) withObject:CGSizeMake(-2.5,0)]; 
     } 
    } 

} 

(मैं नहीं बल्कि एक @selector (से NSSelectorFromString का उपयोग करें) क्योंकि इसका मतलब यह वास्तव में, गैर-दस्तावेजी चीजों का उपयोग नहीं कर रहा है एक तरह से करता है, तो आप प्राप्त है कि मैं क्या मतलब)

यह पूरी तरह से प्रलेखित नहीं है लेकिन मुझे नहीं लगता कि मैंने अनियंत्रित विधियों का उपयोग किया है। असल में यह क्या करता है वह विनाशकारी पृष्ठभूमि से लाल पृष्ठभूमि लेता है और इसे "रद्द करें" नामक दूसरे बटन पर लागू करता है।

तो ऐप्पल को विनाशकारी बटन का रंग बदलना चाहिए, इसलिए गैर-विनाशकारी-विनाशकारी परिवर्तन भी अपडेट की आवश्यकता के बिना होगा। हालांकि यह विशेष रूप से ऐप्पल-सुरक्षित विधियों का उपयोग नहीं करता है।

मैं ऊपर टिप्पणी की बाहर लाइन के साथ मुसीबत का एक छोटा सा आ रही है, अगर तुम मदद कर सकते हैं यहाँ का उत्तर दें: performSelector:withObject:, but not with an object

+3

नहीं, ऐसा मत करो। आप अभी भी एक दृश्य की आंतरिक संरचना के साथ स्क्रू करने के लिए अनियंत्रित विधियों का उपयोग कर रहे हैं कि ऐप्पल आपको संशोधित करने नहीं देता है।भले ही ऐप्पल समीक्षा प्रक्रिया के दौरान इसे पकड़ न सके, फिर भी आप भविष्य में ओएस अपडेट के दौरान इस एप्लिकेशन को तोड़ने के लिए खुद को खोल रहे हैं। –

+0

तार्किक रूप से यह बेहतर है क्योंकि ऐप्पल को इसे दूसरा विनाशकारी बटन अपडेट करना चाहिए स्वचालित रूप से भी अपडेट हो जाएगा। यदि मैं वर्तमान रंगों और सेब के आधार पर अपनी खुद की एक्शन शीट बना देता हूं तो बटनों में से कोई भी सही दिखाई देगा। –

+0

उस बिंदु पर एक काउंटर पॉइंट यह होगा कि वे स्टाइलशीट की संरचना को आसानी से शैली के रूप में बदल सकते हैं और फिर यह टूट जाएगा। यह वाइल्डकार्ड तत्व है ब्रैड के खिलाफ बहस कर रहा है। लेकिन अगर यह अब काम करता है, तो सेब इसे मंजूरी दे देता है, और आप इसे तोड़ने के अपडेट की संभावना पर ध्यान नहीं देते हैं, यह एक मुद्दा नहीं है। – griotspeak

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