UIButton启用不起作用

时间:2013-11-16 21:29:12

标签: ios uibutton uiactivityindicatorview

我有一个带有单个按钮和活动指示器的UIViewController。 在此VC MainViewController.m的课程中,我在viewDidAppear中执行以下操作:

- (void)viewDidLoad
{
    [super viewDidLoad];
    _actLoadLoc.color = [UIColor blueColor];
    _startButton.enabled = NO;
    [_startButton setTitle:@"Fetching Location" forState:UIControlStateDisabled];
}

我的MainViewController.m中的另一种方法称为readyToGo,其实现方式如下:

-(void) readyToGo
{

    [NSThread sleepForTimeInterval:1.0f];
    NSLog(@"Done sleeping");
    _startButton.enabled = YES;
    [_startButton setTitle:@"Start" forState:UIControlStateNormal];
    _actLoadLoc.stopAnimating;

}

UIButtonUIActivityIndicatorView的属性以及我readyToGoMainViewController.h方法的声明如下:

@property (weak, nonatomic) IBOutlet UIButton *startButton;
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *actLoadLoc;
-(void) readyToGo;

从导入readyToGo的其他类abc.[h/m]调用MainViewController.h方法。在abc.m中的一个函数完成用计算数据填充数组后,调用发生。

Done Sleeping在输出中显示以来,此调用有效,但startButton未启用,其测试不会更改且actLoadLoc不会停止动画...任何想法是什么我的代码/方法错了吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您正在视图控制器的错误实例上调用readyToGo。您有一个在屏幕上显示内容的实例,您在某种程度上创建了一个新的实例来调用该方法。你需要获得现有的。


这不太理想,但你应该能够通过以下方式获得控制器:

UINavigationController *n = (UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;
SDPPMainViewController *mvc = (SDPPMainViewController *)[n viewControllers][0];

(需要添加一些演员表,并且可能会分成多行)