2013-01-17 42 views
0

我想在iOS中使用的活动指标,并不能够。我遵循Stackoverflow上的线程并使用它。这是我写的:UIActivity指标没有显示在iOS应用程序启动

-(void)viewDidLoad 
{ 
    [NSThread detachNewThreadSelector:@selector(threadStartAnimating:) toTarget:self withObject:self]; 

    UITapGestureRecognizer *tGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doThisForTap:)]; 
    tGR.numberOfTapsRequired = 1; 

    [myRollTypeLabel addGestureRecognizer:tGR]; 
    myRollTypeLabel.userInteractionEnabled = YES; 

    [self.scrollView addSubview:myRollTypeLabel]; 
} 

- (void) threadStartAnimating:(id)data 
{ 
self.activityIndicatorNew =[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
self.activityIndicatorNew.color = [UIColor redColor]; 
[self.activityIndicatorNew startAnimating]; 
} 
- (void)doThisForTap :(UIGestureRecognizer *)gest 
{ 
    //lots of computation. 
} 
- (void)viewWillDisappear:(BOOL)animated 
{ 
[self.activityIndicatorNew stopAnimating]; 
self.activityIndicatorNew.hidden = YES; 
} 

但是活动指标根本没有显示出来?在“doThisForTap”方法中,我进行计算并移至另一个UIViewController。但我看不到活动指标。我究竟做错了什么?如果您需要更多信息,请询问。谢谢..

+1

我认为NSThread无法在UIKit中使用(无线程安全)。 – Larme

+0

@Larme。这是我在我的问题中提到的线程http://stackoverflow.com/questions/1850186/iphone-uiactivityindicatorview-not-starting-or-stopping – RookieAppler

+0

嗯,我会做主线程中的动画,并加载或任何如果它不触及用户界面,则希望在另一个线程中同时执行此操作。你可以“重新同步”,有时在最后一步和一步之间做一个小动画。 – Larme

回答

1

它不会出现像你实际上与addSubview添加指示器视图层次:

你实例化它,将其分配给一个属性,并启动它的动画,但从来没有实际将它添加到视图层次结构(据我所知)。

要添加活动的指标到画面中,你应该设置它的起源,然后将它添加到任何视图它应该出现在:

self.activityIndicatorNew =[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
self.activityIndicatorNew.color = [UIColor redColor]; 

CGRect indicatorFrame = self.activityIndicatorNew.frame; 
indicatorFrame.origin.x = // x coordinate goes here; 
indicatorFrame.origin.y = // y coordinate goes here; 
self.activityIndicatorNew.frame = indicatorFrame; 

[self.view addSubview:self.activityIndicatorNew]; 

[self.activityIndicatorNew startAnimating]; 

你不应该做最上面的一个背景线程,因为除了主线程之外,您不应该操纵视图层次结构。

如果您确实需要在后台线程中启动指示器动画(并非完全相信您从所展示的代码中完成),那么在该后台线程中唯一安全的做法是调用startAnimating。在分离新线程之前,其他所有内容都应该放入viewDidLoad中。

但是,我会尽量在viewDidLoad中做所有事情,并且只在必要时使用后台线程。

就我个人而言,我会使用Interface Builder进行此操作;我想不出有很多理由在代码中实例化一个简单的活动指示器。

+0

谢谢..我刚刚放弃了我所做的一切。刚刚在我的故事板上放了一个UIActivityIndi​​cator并从那里开始。它工作..我昨天做了这个..它不会工作..再次感谢。 – RookieAppler

相关问题