2011-11-02 19 views
17

मैं कोई नया दृश्य जब एक "अगला" बटन एक पिछले दृश्य से दबाया जाता है पर एक UIButton का पाठ सेट करने के लिए कोशिश कर रहा हूँ नहीं। मैं IBOutlet सही ढंग से स्थापित किया है और मैं इस के उत्तर के लिए सब कुछ खत्म देखा है, लेकिन यह सिर्फ सब पर काम नहीं कर रहा।UIButton setTitle forState कार्य

यहाँ मैं क्या कर रहा हूँ का एक नमूना है:

- (IBAction)computeQuiz:(id)sender 
{ 
    [fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal]; 
} 

- (IBAction)jumpT10ResultsView:(id)sender 
{  
    NSString *nibFileToLoad = @"JumpT10Results"; 

    UIDevice *device = [UIDevice currentDevice]; 

    if([device userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
    { 
     nibFileToLoad = [nibFileToLoad stringByAppendingString:@"-iPad"]; 
    } 

    JumpmasterPathfinderViewController *nextView = [[JumpmasterPathfinderViewController alloc] initWithNibName:nibFileToLoad bundle:nil]; 

    // Modal view controller 
    nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:nextView animated:YES]; 

    [nextView release]; 

    [scrollView setContentSize:CGSizeMake(imageViewWidth, imageViewHeight + 44.0)]; 
} 

इन कार्यों दोनों एक पिछले दृश्य पर एक बटन से जुड़े हैं। दृश्य ठीक और सबकुछ लोड करता है, केवल समस्या यह है कि टेक्स्ट बटन पर नहीं बदलेगा। मुझे 100% यकीन है कि मेरे पास आईबीओटलेट सही तरीके से सेट हैं, मुझे नहीं पता कि मैं क्या गलत कर रहा हूं। कोई विचार?

+0

* मैं मैं IBOutlets सही ढंग से * निर्धारित किया है 100% यकीन है, मुझे आशा है कि IBActions सही ढंग से भी जुड़े हुए हैं? – beryllium

+0

क्या आप वाकई सुनिश्चित करते हैं कि आपका कार्य सेट है? एक ब्रेक पॉइंट डालें और सत्यापित करें। – logancautrell

+0

अगले दृश्य दिखाई देता है और मैं अपने computeQuiz कार्रवाई तब तक दिखाई देने में NSLogs रखा है। कार्यों को बुलाया जा रहा है। – Link

उत्तर

16

यह काम नहीं कर रहा है क्योंकि आईबी के बजाय attributedTitle सेट करता है। वैकल्पिक रूप से

NSAttributedString *attributedTitle = [self.myButton attributedTitleForState:UIControlStateNormal]; 
NSMutableAttributedString *mas = [[NSMutableAttributedString alloc] initWithAttributedString:attributedTitle]; 
[mas.mutableString setString:@"New Text"]; 

[self.myButton setAttributedTitle:mas forState:UIControlStateNormal]; 

या,:

इस बजाय प्रयास करें

[self.myButton setAttributedTitle:nil forState:UIControlStateNormal]; 
[self.myButton setTitle:@"New Text" forState:UIControlStateNormal]; 

(। दूसरा विकल्प अपने प्रारूपण सुरक्षित नहीं करेगा)

+0

अभी भी सुनिश्चित नहीं है कि यह 4 साल के बाद सही उत्तर क्यों नहीं चिह्नित किया गया है! – Prabhav

3

इस कोड की कोशिश ....

UIButton *backbtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 68, 38)]; 
[backbtn setTitle:@"Your string" forState:UIControlStateNormal]; 
//[backbtn setImage:[UIImage imageNamed:@"BackBtn.png"] forState:UIControlStateNormal]; 
[backbtn addTarget:self action:@selector(backBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:backbtn]; 
1

- (IBAction)jumpT10ResultsView:(id)sender 

विधि में बुला

- (IBAction)computeQuiz:(id)sender 

विधि बल्कि उसके बाद एक साथ के रूप में एक साथ के रूप में भी बटन पर क्लिक कॉल करके देखें कोड के नीचे, विधि की कॉल मुझे परिणामस्वरूप पांच फूट यूनिवर्सल रिजल्ट्स बटन ऑब्जेक्ट का आवंटन नहीं होता है।

- (IBAction)computeQuiz:(id)sender 
{ 
    [fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal]; 
} 

- (IBAction)jumpT10ResultsView:(id)sender 
{  
    NSString *nibFileToLoad = @"JumpT10Results"; 

    UIDevice *device = [UIDevice currentDevice]; 

    if([device userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
    { 
     nibFileToLoad = [nibFileToLoad stringByAppendingString:@"-iPad"]; 
    } 
    JumpmasterPathfinderViewController *nextView = [[JumpmasterPathfinderViewController alloc] initWithNibName:nibFileToLoad bundle:nil]; 

    // Modal view controller 
    nextView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:nextView animated:YES]; 

    [nextView release]; 

    [scrollView setContentSize:CGSizeMake(imageViewWidth, imageViewHeight + 44.0)]; 
    [self computeQuiz:nil]; 
} 
0

यह भी आप बटन या इसे से संबंधित चर पर @synthesize उपयोग करने के लिए भूल जाते हैं हो सकता है।

-1

कोशिश:

[fiveFootUniversalResults setBackgroundColor:[UIColor redColor]]; 
[fiveFootUniversalResults setTitle:@"Test" forState:UIControlStateNormal]; 

शायद पृष्ठभूमि सह लॉर शीर्षक रंग के समान है। जब आप काले कलम के साथ काले पेपर पर लिखते हैं तो आप कुछ भी नहीं देख पाएंगे। SetTitle को कॉल करने से पहले पृष्ठभूमि रंग या शीर्षक रंग सेट करने का प्रयास करें।

0

कड़ी में इस सवाल का जवाब नीचे मुझे मदद की है जब मैं एक ही समस्या थी। यह मुझे एक शब्दकोश में सभी विशेषताओं को बचाने की अनुमति दी। मैंने अलग-अलग पाठ के साथ एक नई विशेषता वाली स्ट्रिंग बनाई लेकिन एक ही विशेषताएँ, जो तब मैंने उस बटन में जोड़ा जो मैं बदलना चाहता था। उम्मीद है की यह मदद करेगा।

change the text of an attributed UILabel without losing the formatting?