不同类别的IBAction不起作用?

时间:2011-03-05 01:53:29

标签: iphone xcode ios4

我有一个名为'LoginViewController'的文件需要从'RootViewController.m'文件中执行操作。我做了一个NSLog并且它起作用,但实际的脚本没有。

我还确保在我的LoginViewController中使用#import "RootViewController.h"

LoginViewController

RootViewController *test = [[RootViewController alloc] init];
[NSThread detachNewThreadSelector:@selector(updateAlbumsAfterLogin) toTarget:test withObject:nil];

RootViewController的

- (void)updateAlbumsAfterLogin {

NSLog(@"Updating albums after login!");

// Set up loading box and show it
UIImage *imageLoop = [UIImage imageNamed:@"loading_box.png"];
imagefour = [[UIImageView alloc] initWithImage:imageLoop];
imagefour.frame = CGRectMake(100, 80, 116, 116);
[self.view addSubview:imagefour];

// Set up loading text and show it
myLabel = [[UILabel alloc] initWithFrame:CGRectMake(97, 60, 130, 100)];
myLabel.text = @"Loading...";
myLabel.textColor = [UIColor whiteColor];
myLabel.textAlignment = UITextAlignmentCenter;
myLabel.backgroundColor = [UIColor clearColor];
myLabel.font = [UIFont fontWithName:@"Helvetica" size: 16.0];
myLabel.numberOfLines = 0;
//[myLabel sizeToFit];
[self.view addSubview:myLabel];

// Set up spinner and show it
myIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
myIndicator.center = CGPointMake(158, 155);
myIndicator.hidesWhenStopped = YES;
[self.view addSubview:myIndicator];
[myIndicator startAnimating];

[NSThread detachNewThreadSelector:@selector(updateAlbums) toTarget:self withObject:nil];
//myTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector: @selector(updateAlbums) userInfo: nil repeats: YES];
}

提前致谢, 库尔顿。

如果您需要任何其他代码,请随时提出要求!

1 个答案:

答案 0 :(得分:0)

您正在分离新线程以执行此工作并更新您的视图,但只允许主线程更新视图。这就是为什么你可以看到你的NSLog()消息发生但你的UI更新中没有任何消息。

处理此问题的标准方法是让主线程分离新线程(或在后台线程上执行选择器),然后在获取和数据处理完成后,在主线程上执行使用数据的选择器获取更新UI。