2010-10-10 131 views
11

MyViewController有一个UIButton,另一个MainViewController使用MyViewController。如何更改UIButton标题?

但MainViewController无法更改MyViewController中的UIButton标题。

另外,在MyViewController中只改变viewDidLoad方法中的UIButton标题。

怎么了?

MyViewController

​​

MainViewController

@implementation MainViewController : UIViewController { 
@synthesize scrollView; 
    - (void)viewDidLoad { // can't change button title 
     MyViewcontroller *myView = [[MyViewcontroller alloc] initWithNibName:@"MyViewcontroller" bundle:nil]; 
     [myView.imageButton setTitle:@"ddd" forState:UIControlStateNormal]; 
     [scrollView addSubview:myView.view]; 
     [myView release], myView = nil; 
    } 
} 

回答

37

这是因为该网点没有得到有线视图被加载后,直到和视图中没有加载,直到它被调用后这是第一次(这是懒加载)。您可以通过确保始终首先加载视图来轻松解决此问题。但是,您可能需要重新考虑设计,并使按钮标题依赖于不属于视图层次结构一部分的其他项目。

例如,如果你重新排列你的电话,它会工作:

MyViewcontroller *myView = [[MyViewcontroller alloc] initWithNibName:@"MyViewcontroller" bundle:nil]; 
[scrollView addSubview:myView.view]; // view is loaded 
[myView.imageButton setTitle:@"ddd" forState:UIControlStateNormal]; // imageButton is now wired 
+0

谢谢。我会学习懒加载 – seapy 2010-10-10 04:53:52

+0

我错过了那一点 - 看起来像我有很多要学习+1 – BoltClock 2010-10-10 04:54:29

+0

我遇到了麻烦,因为我使用'setImage'而不是'setBackgroundImage'来设置我的按钮上的文字。如果你使用'setImage',它会覆盖你的文本。 – zekel 2010-11-16 18:10:51