2011-11-02 26 views
17

Tôi đang cố gắng đặt văn bản của UIButton trên chế độ xem mới khi nhấn nút "Tiếp theo" từ chế độ xem trước đó. Tôi đã thiết lập IBOutlet một cách chính xác và tôi đã xem xét tất cả các câu trả lời cho điều này nhưng nó chỉ là không làm việc ở tất cả.UIButton setTitle forState Không hoạt động

Dưới đây là một mẫu của những gì tôi đang cố gắng để làm:

- (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)]; 
} 

Những hành động này đều kết nối với một nút trên một giao diện trước đó. Chế độ xem tải tốt và mọi thứ, vấn đề duy nhất là văn bản S NOT KHÔNG thay đổi trên nút. Tôi chắc chắn 100% tôi đã cài đặt IBOutlets đúng cách Tôi không biết mình đang làm gì sai. Bất kỳ ý tưởng?

+0

* Tôi chắc chắn 100% tôi có IBOutlets được đặt chính xác *, tôi hy vọng IBActions cũng được kết nối đúng không? – beryllium

+0

Bạn có chắc chắn rằng Hành động của bạn đã được đặt? Đặt điểm ngắt và xác minh. – logancautrell

+0

Chế độ xem tiếp theo hiển thị và tôi đã đặt NSLogs vào hành động computeQuiz hiển thị. Các hành động được gọi. – Link

Trả lời

16

Nó không hoạt động vì IB đặt attributedTitle thay vì title.

Hãy thử điều này thay vì:

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

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

Hoặc cách khác:

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

(. Lựa chọn thứ hai sẽ không giữ lại định dạng của bạn)

+0

Vẫn không chắc tại sao điều này không được đánh dấu câu trả lời đúng sau 4 năm! – Prabhav

3

thử mã này ....

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

Thử gọi

- (IBAction)computeQuiz:(id)sender 

phương pháp trong phương pháp

- (IBAction)jumpT10ResultsView:(id)sender 

thay vì sau đó kêu gọi đồng thời trên nút nhấp chuột ngay cả khi đồng thời như trong bên dưới mã, gọi phương thức tôi kết quả là không phân bổ đối tượng nút FiveFootUniversalResults.

- (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

này cũng có thể xảy ra nếu bạn quên sử dụng @synthesize vào nút hoặc các biến liên quan đến nó.

-1

thử:

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

Có lẽ đồng nền lor cũng giống như màu tiêu đề. Bạn sẽ không thấy bất cứ điều gì khi bạn viết trên giấy màu đen với một cây bút màu đen. Hãy thử đặt màu nền hoặc màu tiêu đề trước khi gọi setTitle.

0

Câu trả lời trong liên kết bên dưới đã giúp tôi khi tôi gặp vấn đề tương tự. Nó cho phép tôi lưu tất cả các thuộc tính trong một từ điển. Tôi đã tạo một chuỗi được phân bổ mới có văn bản khác nhưng thuộc tính giống nhau, sau đó tôi đã thêm vào nút mà tôi muốn thay đổi. Hi vọng điêu nay co ich.

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

Các vấn đề liên quan