2011-12-03 13 views
6

मान लें वहाँ एक iphone परियोजना है कि है के लिए कोड है:UITextfield.text अशक्त रिटर्न

 IBOutlet UITextField* numberDisplay; 
     @property (strong,nonatomic) IBOutlet UITextField *numberDisplay; 

कार्यान्वयन फ़ाइल में और

@synthesize numberDisplay; कार्यान्वयन फ़ाइल में

। इसके अलावा कार्यान्वयन में जब मैं चलाने एप्लिकेशन कोई प्रदर्शन UITextfield में दिखाया गया है

 -(IBAction)numberClicked:(id)sender { 
    UIButton *buttonPressed = (UIButton *)sender; 
    int val = buttonPressed.tag; 
    if ([numberDisplay.text compare:@"0"] == 0) { 
    numberDisplay.text =[NSString stringWithFormat:@"%d", val ]; 

    } else { 
     numberDisplay.text = [NSString 
        stringWithFormat:@"%@%d", numberDisplay.text, val ]; 
    } 

    } 

, भले ही कनेक्शन आईबी के साथ किए गए थे और निरीक्षक देखने से किए जाने के लिए साबित होता है। यहां तक ​​कि एक परीक्षण के रूप में अगर मैं जोड़ने लाइनों

numberDisplay.text = @"a"; 
    NSLog(@"the value is %@",numberDisplay.text); 
    NSLog(@"the value is %@",numberDisplay); 

मैं "मूल्य दोनों cases.Any विचारों में (शून्य) है।

कर सकते हैं किसी कृपया मुझे बताओ क्या इन दो पंक्तियों के साथ गलत क्या है? । आप सभी को धन्यवाद।


धन्यवाद। मैं खरोंच से सब काम करता है शुरू कर दिया है और अब। ऐसा लगता है कि मैं एक गलत लेबल फ़ाइल था।

+1

इसकी 'टेक्स्ट' संपत्ति के बजाय' संख्या डिस्प्ले 'चर मुद्रित करने का प्रयास करें। मुझे संदेह है कि कहीं और आपने अपना टेक्स्ट फ़ील्ड शुरू नहीं किया है; क्योंकि आप किसी नल ऑब्जेक्ट को एक वैरिएबल असाइन नहीं कर सकते हैं, आपको बदले में शून्य मिलती है। – JoePasq

+0

आप टेक्स्ट फ़ील्ड को कैसे प्रारंभ करेंगे। विशेषता निरीक्षकों में मैंने पाठ और/या प्लेसहोल्डर को सेट करने और दोनों को यह देखने के लिए 0 पर सेट करने का प्रयास किया है कि यह मदद करेगा या नहीं, लेकिन यह –

+1

नहीं है आपको आईओओटलेट के साथ अपनी .xib फ़ाइल में UiTextView को लिंक करना होगा। –

उत्तर

1

लाइन वाई के बाद यदि आपने इंटरफ़ेस बिल्डर को आईबीओलेट सेट किया है तो गैर शून्य मान वापस कर देंगे। यह। एच फाइल में घोषित किया जाएगा।

IBOutlet UITextField* numberDisplay; 

आप एक आईबी में आउटलेट की स्थापना नहीं कर रहे हैं, यह स्पष्ट रूप से शून्य मान वापस आ जाएगी या आप प्रोग्राम द्वारा यह प्रारंभ करने की है।

UITextField *numberDisplay = [[UITextField alloc] initWithFrame:CGRectMake(10,10, 100,30)]; 
numberDisplay.font = [UIFont fontWithName:@"Verdana" size:12.0]; 
numberDisplay.background = [UIColor clearColor]; 
numberDisplay.text = @"123456789"; 
[self.view addSubview:numberDisplay]; 
NSLog(@"the value is %@",numberDisplay.text); // returns 123456789 
0

ऐसा लगता है कि आप इंटरफ़ेस बिल्डर में अपने IBOutlets को ठीक तरह से सेट नहीं कर सकते हैं।

मूल रूप से एक ही चीज़ के संबंध में this question पर मेरा उत्तर देखें।

2

नल ऑब्जेक्ट्स चयनकर्ता प्राप्त कर सकते हैं और वे उन्हें अनदेखा करते हैं और शून्य वस्तु को वापस करते हैं। मामले आपके सामने आने वाली इस तरह है:

[(UITextField*)nil setText:@"a"]; 
NSLog(@"the value is %@", [(UITextField*)nil text]); 

आप निम्न तरीकों से ठीक से पाठ फ़ील्ड के संश्लेषण के लिए सुनिश्चित करें कि पाठ फ़ील्ड रिक्त

+0

यदि मैं इसे" ए " –

+0

पर सेट करता हूं तो टेक्स्ट फ़ील्ड शून्य कैसे हो सकता है आप' nil कास्टिंग क्यों कर रहे हैं '? – titaniumdecoy

+1

उसका जवाब प्रदर्शित करने के लिए कि शून्य शून्य के साथ किसी भी संदेश का जवाब दे सकता है। –

0

नहीं है: - ज

@property (nonatomic, retain) UITextField *numberDisplay; 
में पंक्ति जोड़ें

और

@synthesize numberDisplay; 

मीटर में लाइन जोड़ने और फिर तुम क्या करते किया। आपको इस बार शून्य मूल्य नहीं मिलेगा।

+0

कोई अच्छा नहीं। अभी भी शून्य –

+0

जांचें कि आईबी में आपके कनेक्शन उचित हैं या न ही .. – vipul

+0

मैंने एक्सब फ़ाइल में टेक्स्ट बॉक्स को आउटलेट में खींच लिया है और यह पंजीकरण करता है, क्योंकि कनेक्शन इंस्पेक्टर में यह संदर्भ आउटलेट फ़ाइल के मालिक आईबीओयूलेट को दिखाता है । –

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