2012-05-25 12 views
7

आईओएस - प्रोग्रामेटिक रूप से कोडित UIButton मेरे दृश्य पर नहीं दिख रहा है

हैलो,

मैं अपने UIViewController प्रोग्राम के रूप में करने के लिए और से एक UIButton और अन्य आइटम जोड़ने के लिए मैं क्या पढ़ सकते हैं और अन्य अतः सवालों में देखा है मैं इस कोड के साथ सही रास्ते पर होना चाहिए कोशिश कर रहा हूँ:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 



UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];  
backButton = [[UIButton alloc] init]; 
backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
backButton.frame = CGRectMake(10, 25, 150, 75); 
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15]; 
backButton.titleLabel.text = @"Back"; 
[self.view addSubview:backButton]; 


// Do any additional setup after loading the view. 
} 

अब यह कोड दृश्य में रखा गया हैडलोड लोड विधि और यह प्रकट नहीं होता है, जो मुझे प्रश्न पर ले जाता है - मैं क्या गलत कर रहा हूं?

जब मैं पृष्ठभूमि का रंग बदलना चाहता हूं और दृश्य में डालना चाहता हूं तो यह ठीक काम करता है।

चीयर्स जेफ

+0

यू – CStreel

+0

मैं पूर्ण विधि दिखाने के लिए कोड को अद्यतन किया है अपने viewDidLoad कोड प्रस्तुत कर सकते हैं - मैं तो बस इतना अभ्यास कर रहा हूँ यह बहुत खाली है :-) –

+0

एक साइड नोट के रूप में आप बटन के तीन उदाहरण बना रहे हैं। दो अनावश्यक हैं। –

उत्तर

23

फोन मुझे लगता है कि आप सही तरीके से बटन डालने जा सकता है, लेकिन सिर्फ यह नहीं देख सकते हैं, क्योंकि इसमें कोई पृष्ठभूमि है और पाठ नहीं दिखा रहा है।

गोलाकार रेक्ट बटन सिस्टम बटन का उपयोग करने का प्रयास करें, यह देखने के लिए कि यह दिखाता है या नहीं। पाठ को सही ढंग से सेट करें। मैं फ़ॉन्ट को सेटिंग भी हटा दूंगा, बस फ़ॉन्ट के साथ एक समस्या है।

// backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
backButton = [UIButton buttonWithType:UIButtonTypeSystem]; 
backButton.frame = CGRectMake(10, 25, 150, 75); 
[backButton setTitle:@"Back" forState:UIControlStateNormal]; 
[self.view addSubview:backButton]; 

अद्यतन: UIButtonTypeRoundedRect पदावनत बीड गया है।

+0

सहमत यूआईबटन टाइपराउंडरेक्ट ने शीर्षक को दिखाने की अनुमति देने के लिए आवश्यक जानकारी प्रदान की। हालांकि, अब इसे बहिष्कृत करने के बाद से हमें यूआईबटन टाइप कस्टम या सिस्टम (अगर एनएवी से संबंधित) का उपयोग करने की आवश्यकता होगी, जैसा कि यहां बताया गया है: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/#// apple_ref/doc/c_ref/UIButtonType – bitsand

3

आप बटन शीर्षक गलत तरीके से सेट कर रहे हैं। उपयोग करें:

- (void)setTitle:(NSString *)title forState:(UIControlState)state 

अन्य लोगों ने कहा है कि आपको अपने बटन को तीन बार आरंभ करने की आवश्यकता नहीं है। दूसरी और तीसरी पंक्तियों को हटा दें।

0
मुद्दों से

अलावा,

UIButtonTypeCustom टिप्पणी में कहा एक खाली बटन पैदा करता है।

जब आप किसी छवि को बटन के रूप में उपयोग करना चाहते हैं, तो इसका उपयोग करें, लेकिन setImage का उपयोग करके ध्यान रखें: बटन के शीर्षक को ओवरराइड करता है। तो आपको पृष्ठभूमि छवि सेट करने की आवश्यकता होगी।

आपका बटन वास्तव में नहीं है यह सिर्फ "दिखाई" नहीं है वहाँ

तो

उपयोग UIButtonTypeRoundRect (यह थोड़ा अलग हो सकता है)

या होने के लिए आप एक रूप में एक छवि चाहते हैं बटन।

उपयोग UIButtonTypeCustom कॉल setBackgroundImage: तो setTitle:forState:

4

आपने स्थैतिक विधि बटनविथ टाइप का उपयोग करके बटन बनाया है, फिर आपने उस बटन के लिए आवंटित स्मृति आवंटित की है।

UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
backButton.frame = CGRectMake(10, 25, 150, 75); 
backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15]; 
backButton.titleLabel.text = @"Back"; 
[self.view addSubview:backButton]; 
0

आप बटन प्रकार का उपयोग करने है RoundedRect तो हम पृष्ठभूमि रंग

[UIButton buttonWithType: UIButtonTypeRoundedRect]; 

आशा है कि यह मदद मिलेगी देख सकते है!

1

आप बाद में ब्लॉक को कॉल करने के लिए dispatch_after का उपयोग कर सकते हैं। तो यहां पहली बार लोड लोड किया गया है, यह 0.1 सेकंड के भीतर ले जाएगा और फिर सभी बटन दृश्यमान हैं। Xcode, dispatch_after टाइप करना आरंभ करें और हिट निम्न के स्वत: पूर्ण करने के लिए दर्ज करें:

इस प्रयास करें:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 

    UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];  
    backButton = [[UIButton alloc] init]; 
    backButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    backButton.frame = CGRectMake(10, 25, 150, 75); 
    backButton.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:15]; 
    backButton.titleLabel.text = @"Back"; 
    [self.view addSubview:backButton]; 

}); 
+1

हे @ निराव - कोड के लिए धन्यवाद, लेकिन शायद उत्तर के संबंध में इसका उद्देश्य क्या है इसका स्पष्टीकरण जोड़ें। आपको अधिक पॉपुलर बनाता है :-) कोड कोड के अंदर अपना कोड भी डालें। –

+1

वह दिखा रहा है कि व्यू लोड होने के बाद 0.1 सेकंड कहने के लिए थ्रेड सेट अप करने के लिए और उस समय प्रोग्रामेटिक रूप से जोड़ा गया बटन जोड़ें। मैंने यह पाया, जबकि मैं कुछ कोड में था जो पूरी गति से काम नहीं करता था, लेकिन अगर मैं कोड को अकेला छोड़ देता तो दौड़ता। – netskink