从不同的类禁用Button

时间:2014-03-01 20:43:29

标签: iphone objective-c

我无法弄清楚我做错了什么在调用方法时没有任何反应。

在类

的接口中声明
ViewController* mainMenu;

- (id)initWithSize:(CGSize)size {

    if (self = [super initWithSize:size]) {
        mainMenu = [[ViewController alloc] init];

        ....
    }
}

- (void)pauseEnabled {
    //  mainMenu.pauseButton.hidden = NO;
    //  mainMenu.pauseButton.enabled = YES;
    [mainMenu.pauseButton setHidden:NO];
    [mainMenu.pauseButton setEnabled:YES];
}

- (void)pauseDisabled {
    mainMenu.pauseButton.hidden = YES;
    mainMenu.pauseButton.enabled = NO;
}

- (void)startGame {
    [self pauseEnabled];
    ......
}

2 个答案:

答案 0 :(得分:1)

当你跑步时:

mainMenu = [[ViewController alloc] init];

您正在创建一个新的视图控制器,其视图未加载且从未在屏幕上显示。您需要获取实际显示在屏幕上的ViewController实例,以便您可以向其发送消息。如何做到这一点在很大程度上取决于您的应用程序的结构以及创建ViewController的内容。

您对initWithSize:的使用表明此对象本身不是控制器。在这种情况下,您可能需要重新考虑您正在做的事情,而不是让此类维护对视图控制器的引用,而是将其引用给它在创建时应与之交互的按钮。

答案 1 :(得分:0)

确保pauseButton已连接到storyboard / xib文件中的插座。基本上,确保它不是nil。还要验证是否要将mainMenu的视图添加到视图层次结构中。