2011-03-19 55 views
0

我正在尝试从不同的XIB和类中执行动作。我一直盯着这个代码几天,是的,几天。请帮忙!以下是一些代码。来自不同XIB的动作

CaptionView.h文件

#import "processViewController.h" 

CaptionView.m文件

processViewController *test = [[processViewController alloc] init]; 
[test startUploads]; 

processViewController.m

- (IBAction)startUploads { 
[NSThread detachNewThreadSelector:@selector(startUploadsTwo) toTarget:self withObject:nil]; 
} 

- (IBAction)startUploadsTwo { 
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

... code... 

[pool release]; 
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
} 

出于某种原因,动作不会被调用。任何帮助表示赞赏! - Coulton

回答

3

如果我没有弄错,你不能从工作线程更新UI。出于这个原因,你应该从主线程中更改networkIndicator

您仍然可以从工人触发此不过,使用这种方法:

[self performSelectorOnMainThread:@selector(updateSpinner:) 
          withObject:nil 
         waitUntilDone:false]; 

the docs

主线程包括应用程序的主运行循环,是实现NSApplication对象,其中接收事件。

此报价指的是NSApplication,这是用于OSX,但我想象也适用于iOS上的UIApplication。虽然找不到实际的报价。

+0

谢谢!这有帮助!我也意识到我的数据库设置是在我的viewDidLoad中,并且由于用户没有打开它,连接没有发生。所以我只是简单地将连接复制到该动作中,并且它运行得非常漂亮! – iosfreak 2011-03-19 02:36:43

+0

@ phpnerd211:太好了!很高兴有帮助。 – 2011-03-19 03:22:50