[英]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
具有UIButton
, UIActivityIndicatorView
和readyToGo
方法的声明的readyToGo
,如下所示:
@property (weak, nonatomic) IBOutlet UIButton *startButton;
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *actLoadLoc;
-(void) readyToGo;
从另一个导入了MainViewController.h
类abc.[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.