【发布时间】:2013-11-16 21:29:11
【问题描述】:
我有一个带有单个按钮和一个活动指示器的 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 方法的声明,如下所示:
@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 没有停止动画......知道我的代码/方法有什么问题?
提前致谢!
【问题讨论】:
-
你的视图控制器只有
weak引用UIButton和UIActivityIndicatorView视图有什么特别的原因吗? -
不是真的,它是 Xcode 5 中的默认设置,我就这样保留了它...更改为
strong并不能解决我认为的问题(请参阅下面的 @Wain 的答案),是吗? -
弱是好的,他们被他们的superview保留@ShaggyFrog
标签: ios uibutton uiactivityindicatorview