iOS - 隐藏到是不工作

时间:2015-03-23 15:25:17

标签: ios uiviewcontroller hidden

我正在从另一个控制器调用一个方法,但由于某种原因它不起作用。 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

4 个答案:

答案 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条件是否隐藏或显示基于该属性的按钮。希望对你有用。如果您需要此代码,请告诉我。