我正在从另一个控制器调用一个方法,但由于某种原因它不起作用。 NSLog工作正常但myButton
没有出现。
第一个控制器.h:
-(void) buttonChange;
第一个控制器.m
-(void)buttonChange {
myButton.hidden=NO; //this is not getting executed
NSLog(@"it's working");
}
- (void)viewDidLoad{
myButton.hidden=YES; //initially hidden
//....other codes
}
第二控制器:
FirstController *theButtonInstance = [[FirstController alloc] init];
[theButtonInstance buttonChange]; //all works fine when I call this, but button is not showing up
答案 0 :(得分:0)
将此行myButton.hidden=YES;
放在FirstController的init方法中。
答案 1 :(得分:0)
您正在创建FirstController实例,但viewDidLoad还没有运行。然后立即将隐藏设置为NO。稍后,将调用viewDidLoad,并在视图出现之前将隐藏设置为YES。您必须等到调用viewDidLoad才能正确设置隐藏,并且在创建控制器时不会立即调用它。你可以这样做:
[self performSelector:@selector(buttonChange) withObject:nil afterDelay:3.0] ;
要查看按钮不显示,请在3秒后显示。
答案 2 :(得分:0)
如果您要创建FirstController
的新实例(您目前提到的Undo
已经提到过),则无需致电[theButtonInstance buttonChange];
,但需设置theButtonInstance.myButton.hidden = NO;
在您创建FirstController
答案 3 :(得分:0)
您可以在FirstViewController.h中创建BOOL属性。并在推送控制器之前将该属性设置为NO。之后转到FirstViewController中的viewDidLoad方法并写入if条件是否隐藏或显示基于该属性的按钮。希望对你有用。如果您需要此代码,请告诉我。