0
我有一个视图控制器,UITextView加载到框架中。每次函数调用时,我都想更新UITextView的文本。在递归函数运行期间更新UITextView
我试图更新主线程上的UITextView,但似乎并没有在递归函数完成运行后设置View UNTIL的文本。
'Maze.h'是定义协议的对象,'MainViewController.m'是委托。
继承人的控制器代码:
'MainViewController.m'
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
Maze *aMaze = [[Maze alloc] initWithMaze:@"Maze.txt" andUpdate:true everyXSeconds:1];
[aMaze setDelegate:self];
if (![aMaze parseFile]) {
exit(2);
}
if ([aMaze solve:-1 y:-1 z:-1]){
NSLog(@"%@", [aMaze printMazeHorizontally]);
NSLog(@"Escapable: %@", [aMaze getMoveSequence]);
} else {
NSLog(@"Unescapable");
exit(1);
}
}
- (void)didMakeMove:(NSString *)maze {
NSLog(@"%@", maze);
dispatch_async(dispatch_get_main_queue(), ^{
[self.maze setText:maze];
});
}
'Maze.m'
- (BOOL)solve:(NSInteger)x y:(NSInteger)y z:(NSInteger)z
{
...
...
[self.delegate didMakeMove:self.printMazeVertically];
...
...
}
的UITextView的只是似乎没有更新,直到-(BOOL)solve:::
完成运行。其中只更新一次而不是多次。
不知道为什么会发生这种情况。
有关如何更新UITextView的任何想法?
我认为更新UI应该在主线程上完成?
Solution:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
if ([aMaze solve:-1 y:-1 z:-1]){
NSLog(@"%@", [aMaze printMazeHorizontally]);
NSLog(@"Escapable: %@", [aMaze getMoveSequence]);
} else {
NSLog(@"Unescapable");
exit(1);
}
});
Sweet ....我所要做的就是让递归函数在后台运行,就像你说的......感谢利奥.. – jsetting32 2014-09-22 18:14:37
干杯。如果答案对您有帮助,请接受。 – 2014-09-22 18:16:35