我有一个带有单个按钮和活动指示器的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;
}
我UIButton
,UIActivityIndicatorView
的属性以及我readyToGo
中MainViewController.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
不会停止动画...任何想法是什么我的代码/方法错了吗?
提前致谢!
答案 0 :(得分:1)
您正在视图控制器的错误实例上调用readyToGo
。您有一个在屏幕上显示内容的实例,您在某种程度上创建了一个新的实例来调用该方法。你需要获得现有的。
这不太理想,但你应该能够通过以下方式获得控制器:
UINavigationController *n = (UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;
SDPPMainViewController *mvc = (SDPPMainViewController *)[n viewControllers][0];
(需要添加一些演员表,并且可能会分成多行)