我只在程序中包含与此标签相关的代码。
在我的 viewDidLoad 方法中,我有
[startLabel setHidden:NO];
startLabel.text = @"Touch to Begin";
在touchesBegan方法中我有
startLabel.text = @"Loading . .";
[self fillArrays];
然后在 fill Arrays 方法中,我填充数组,然后隐藏标签 -
self.myArray = [NSArray arrayWithObjects:
[UIImage imageNamed:@"Frame 1.png"], . .etc etc etc . . . nil]];
[startLabel setHidden:YES];
但是,在加载数组之前文本不会更新。导致“正在加载..”文本永远不会出现。因为它似乎是在数组填充后实现的。
同时 setHidden bool 设置为 YES,因此人们永远看不到标签。
我希望在该方法开始填充数组之前更新 startLabel,因为这需要一些时间。即顺序操作的方法。
这可能吗?
谢谢
最佳答案
你不需要多线程,那会让事情变得过于复杂。问题是,在代码返回之前,UIKit 不会更新用户界面,因此您需要安排用户界面更新、加载数组,然后将控制权返回给 UIKit,然后由 UIKit 执行用户界面更新。您需要做的是安排用户界面更新,将控制返回给 UIKit,然后在运行循环的下一次迭代中加载数组。为此,您可以使用零延迟的performSelector:withObject:afterDelay:,它会在下一个运行循环迭代中执行方法调用。这应该可以解决问题:
startLabel.text = @"Loading . .";
[self performSelector:@selector(fillArrays) withObject:nil afterDelay:0];
关于iphone - 是否可以使一个方法顺序运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12053228/