iphone - 是否可以使一个方法顺序运行?

标签 iphone objective-c ios methods uilabel

我只在程序中包含与此标签相关的代码。

在我的 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/

相关文章:

iphone - 对具有范围对象的 NSMutablearray 进行排序

ios - Storyboard已编译但 iOS 找不到它并崩溃

ios - 带有反向路径的 UIBezierPath 的 UIView

ios - AutoLayout 的 UILabel 最大高度

ios - 如何将堆栈中的 1 个以上的 View Controller 委托(delegate)给 View Controller ?

iphone - 如何让NSUserDefaults显示在iPhone的设置中?

iphone - Flurry Analytics,基本分析问题

iphone - 添加到 UITableViewCell 的内容 View 中的 UIButton 仅在选择单元格时出现

iphone - 仅在一个 View 上更改导航栏

iphone - 类扩展 - 无法识别的二传手