繁体   English   中英

UIButton启用不起作用

[英]UIButton enable doesn't work

我有一个带有单个按钮和一个活动指示器的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;

}

我在MainViewController.h具有UIButtonUIActivityIndicatorViewreadyToGo方法的声明的readyToGo ,如下所示:

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

从另一个导入了MainViewController.habc.[h/m]调用了readyToGo方法。 该调用在abc.m一个函数完成用计算的数据填充数组之后发生。

由于Done Sleeping显示在输出中,因此该调用有效,但是未启用startButton ,其测试不会更改,并且actLoadLoc不会停止动画……知道我的代码/方法有什么问题吗?

提前致谢!

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


这不是理想的方法,但是您应该可以通过以下方式获得控制器:

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

(将需要添加一些强制转换,并且可能应该分解为多行)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM