在我viewDidLoad
,我调用一个函数:viewDidLoad方法调用行为
[common startActivityIndicatorOnView:self.view];
此方法添加与活动指示灯视图,在self.view
中心。 我的当前视图被推送到导航堆栈上。这是该视图中查找此方法返回后(活动指示灯的观点是不是在中心):
但是,如果我调用相同的方法是这样的:
[common performSelectorOnMainThread:@selector(startActivityIndicatorOnView:) withObject:self.view waitUntilDone:NO];
的观点看起来像下面的图片(活动指示灯的观点是在中心):
我不明白,它是如何有所作为,如果主叫用户线是写在viewDidLoad
。 如果有人能帮助我得到这个,请提前致谢。
仅供参考, 的方法是这样的:当你加载viewControllers
-(void) startActivityIndicatorOnView:(UIView *)view {
if ([NSRunLoop currentRunLoop] != [NSRunLoop mainRunLoop]) {
[self performSelectorOnMainThread:@selector(startActivityIndicatorOnView:) withObject:view waitUntilDone:NO];
return;
}
view.userInteractionEnabled = NO;
activityBgView = [[UIView alloc] initWithFrame:CGRectMake((view.frame.size.width/2) - 50, (view.frame.size.width/2) - 50, 100, 100)];
activityBgView.center = view.center;
activityBgView.backgroundColor = [UIColor grayColor];
activityBgView.alpha = 0.8;
spinner = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake((activityBgView.frame.size.width/2)-10, (activityBgView.frame.size.width/2)-10, 20, 20)];
spinner.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge;
spinner.center = view.center;
[view addSubview:activityBgView];
[view addSubview:spinner];
[spinner startAnimating];
}
尝试self.navigationController.view代替self.view。 – satheeshwaran 2013-04-09 10:20:15
@Pince我已经知道调用'performSelectorOnMainThread'调用主线程中的方法。但我在'viewDidLoad'中这样做,它本身在主线程中调用。所以,应该没有区别。 – 2013-04-09 11:26:28