2009-08-04 6 views
5

मैं एक शुरुआती आईफोन डेवलपर हूं। मेरे कोड निम्नलिखित है:एक टूलबार पर UILabel (UIBarButtonItem) के पाठ को प्रोग्रामेटिक रूप से

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
UILabel *lblTotCaratteri = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 25, 15)]; 
lblTotCaratteri.textAlignment = UITextAlignmentCenter; 
lblTotCaratteri.font = [UIFont italicSystemFontOfSize:13.0]; 
lblTotCaratteri.textColor = [UIColor greenColor]; 
lblTotCaratteri.backgroundColor = [UIColor clearColor]; 
lblTotCaratteri.adjustsFontSizeToFitWidth = YES; 
lblTotCaratteri.text = @"0"; 

UIBarButtonItem *lblCaratteri = [[UIBarButtonItem alloc] initWithCustomView: lblTotCaratteri]; 

inserimentoToolbar.items = [NSArray arrayWithObjects:fixedSpace, lblCaratteri, fixedSpace, nil]; 

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

+2

क्या आपके पास lblTotCaratteri का संदर्भ है? यदि नहीं, तो इसे अपने @interface में घोषित करें। यदि ऐसा है, तो इसे UILabel * (ऊपर पंक्ति 2 पर) के साथ दोबारा न लें। फिर आप lblTotCaratteri.text = @ "newtexthere" को कॉल कर सकते हैं। – mjhoy

+0

यह काम किया! मैंने इसे इंटरफेस में जोड़ा और निश्चित रूप से इसे फिर से नहीं मिला। मैं आपकी टिप्पणी को जवाब के रूप में कैसे चिह्नित कर सकता हूं? फिर से धन्यवाद! – crash

+0

मैंने देखा है कि आपके चर को फिक्स्ड स्पेस कहा जाता है, लेकिन इसका मान वास्तव में फ्लेक्सिबल स्पेस है। क्या यह एक गलती है? – mk12

उत्तर

6

एक तरीका यह हो सकता है, यह सोचते हैं inserimentoToolbar अपने इंटरफेस में घोषित किया जाता है:

[(UILabel *)[[toolbar.items objectAtIndex:1] view] setText:@"sometext"]; 

यह वास्तव में केवल अपने टूलबार संभालने (वस्तुओं के संदर्भ में) नहीं बदलता है काम करता है।

या

अधिक आदर्श समाधान अपने इंटरफेस में lblTotCaratteri डाल करने के लिए (अपने हेडर फाइल में) होगा। जैसा:

@interface UntitledViewController : UIViewController { 
    UILabel *lblTotCaratteri; 
} 

फिर अपने शामिल कोड

UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
lblTotCaratteri = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 25, 15)]; 
lblTotCaratteri.textAlignment = UITextAlignmentCenter; 
// etc etc etc 

जैसे फिर किसी भी बिंदु पर, बस

lblTotCaratteri.text = @"sometext"; 
+0

क्षमा करें mjhoy कि मैंने मूल रूप से दूसरे भाग में अपना जवाब बहाल किया। इसे पहले नहीं देखा था। – Neil

+0

जैसा कि मैंने पहले टिप्पणी की थी, यह इंटरफ़ेस में लेबल जोड़कर काम कर रहा था और जहां भी मुझे इसकी आवश्यकता थी वहां कॉल कर रहा था। आपके उत्तर के लिए भी धन्यवाद। – crash

5

यो का प्रयोग करेंगे, यह मेरे लिए काम किया, मैं UIBarButtonItem शीर्षक जब बदल मैं उसी UIBarButtonItem पर क्लिक करता हूं। मतलब मेरी जरूरत फ्लिपफ्लॉप की तरह थी। यदि पहली बार क्लिक करें तो यह "MyText1" कहता है, फिर "MyText2" में शीर्षक परिवर्तनों पर क्लिक करें। जब उपयोगकर्ता बटन पर क्लिक करता है तो टेक्स्ट टॉगल करता है।

-(IBAction)myBarButtonItem:(id)item{ 

if(flag){ 
    flag=FALSE; 
    [(UIBarButtonItem *)item setTitle:@"MyText1"]; 
} 
else{ 
    flag=TRUE; 
    [(UIBarButtonItem *)item setTitle:@"MyText2"]; 
} 

नोट: मैंने UIBarButtonItem प्रोग्रामेटिक रूप से नहीं बनाया है। मैंने इंटरफ़ेस बिल्डर में बनाया और इस बटन पर "myBarButtonItem" विधि का संदर्भ सेट किया। तो जब UIBarButtonItem या कहें कि इस प्रकार का बटन दबाया जाता है तो यह "myBarButtonItem" विधि को कॉल करता है और बटन के संदर्भ को पैरामीटर के रूप में भेजता है जिसे मैं आगे टाइप करता हूं (UIBarButtonItem *) और setTitle प्रॉपर्टी का उपयोग अपने टेक्स्ट को बदलने या शीर्षक कहने के लिए करता हूं।

*** विधि के हस्ताक्षर घोषित करें i.e. अपने शीर्षलेख फ़ाइल में: - (IBAction) myBarButtonItem: (id) आइटम;

+0

'।टेक्स्ट' मौजूद नहीं है (अब और?), लेकिन '.title' करता है। – Roger

+0

प्रोग्रामेटिक रूप से मेरे लिए काम नहीं किया। –

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