【发布时间】:2014-08-02 15:06:57
【问题描述】:
我有一个 UIActivityIndicatorView,我在收到来自通知中心的通知时启动和停止它。虽然我收到通知并通过“performSelectorOnMainThread”调用开始和停止,但它不会开始动画,也不会变得可见。
这是我的代码:
-(void)stopAnimation:(id)sender {
if( _saveActivityIndicatorView.isAnimating ) {
[_saveActivityIndicatorView stopAnimating];
}
}
-(void)startAnimation:(id)sender {
if( !_saveActivityIndicatorView.isAnimating ) {
[_saveActivityIndicatorView startAnimating];
}
}
-(void)saveStarted{
NSLog(MRVaccinationEventsUpdateStarted);
[self performSelectorOnMainThread:@selector(startAnimation:) withObject:self waitUntilDone:YES];
}
-(void)saveCompleted{
NSLog(MRVaccinationEventsUpdateCompleted);
[self performSelectorOnMainThread:@selector(stopAnimation:) withObject:self waitUntilDone:YES];
}
这就是我发布和观察通知的方式(都在同一个文件中):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(saveStarted)
name:MRVaccinationEventsUpdateStarted
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(saveCompleted)
name:MRVaccinationEventsUpdateCompleted
object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:MRVaccinationEventsUpdateStarted object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:MRVaccinationEventsUpdateCompleted object:nil];
请注意,我确实收到了通知。 这段代码有什么问题?
【问题讨论】:
-
最可能的解释:
_saveActivityIndicatorView为零 -
这不是解决问题,而是在对
performSelector...的两次调用中:1)为什么将self传递给withObject:和2)为什么将YES传递给@987654328 @? -
@jrturton 不,它绝对不是 nil,而是故事板中的一个 IBOutlet
-
@maddy 同时设置为
nil和NO也不起作用... -
@mradlmaier 仅仅因为
_saveActivityIndicatorView来自一个出口并不意味着它不能是nil。您是否真的在运行时进行检查以确定?
标签: ios uiactivityindicatorview