Cómo cambiar el título de UIButton?

MyViewController tiene un button UIB y otro MainViewController usa MyViewController.

pero MainViewController no puede cambiar el título del button UIB en MyViewController.

también, en MyViewController, solo cambie el título de UIB en el método viewDidLoad.

¿Qué sucede?

MyViewController

@interface MyViewcontroller : UIViewController { IBOutlet UIButton *imageButton; } @property (nonatomic, retain) UIButton *imageButton; @implementation MyViewcontroller : UIViewController { @synthesize imageButton; - (void)viewDidLoad { // can change button title [imageButton setTitle:@"buttonTitle" forState:UIControlStateNormal] } - (void)setButtonTitle { // can't change button title [imageButton setTitle:@"buttonTitle" forState:UIControlStateNormal]; } } 

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; } } 

Esto sucede porque las salidas no se conectan hasta después de que se carga la vista, y la vista no se carga hasta después de que se llama por primera vez (es una carga floja). Puede solucionar esto fácilmente simplemente asegurándose de que siempre cargue la vista primero. Sin embargo, es posible que desee reconsiderar su layout y hacer que el título del button dependa de algún otro elemento que no sea parte de la jerarquía de la vista.

Por ejemplo, si vuelve a orderar sus llamadas, funcionará:

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