你们中有人知道是否可以取消viewDidAppear
吗?
当我加载一个新视图时,viewDidAppear
正在加载,在那个时候我不能做切换视图的事情。
这是viewDidAppear
代码:
- (void)viewDidAppear:(BOOL)animated{
NSURL * imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"Url",Username]];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage * image = [UIImage imageWithData:imageData];
if (image) {
UsersProfilpic.image = image;
}
imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"Url",FriendsName]];
imageData = [NSData dataWithContentsOfURL:imageURL];
image = [UIImage imageWithData:imageData];
if (image) {
FriendsProfilpic.image = image;
}
}
提前致谢。 :)
最佳答案
您永远不要通过网络调用阻止UI线程。
了解有关GCD的信息。
在ViewDidLoad中执行此操作时,消除模态时也会调用viewDidAppear,您不想每次消除模态时都下载图像
- (void)viewDidLoad
{
[super viewDidLoad];
// Call it in global queue
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL * imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"Url",Username]];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage * image = [UIImage imageWithData:imageData];
if (image) {
// Update image on ui thread
dispatch_async(dispatch_get_main_queue(), ^{
UsersProfilpic.image = image;
});
}
});
// Call it in global queue
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"Url",FriendsName]];
imageData = [NSData dataWithContentsOfURL:imageURL];
image = [UIImage imageWithData:imageData];
if (image) {
// Update image on ui thread
dispatch_async(dispatch_get_main_queue(), ^{
FriendsProfilpic.image = image;
});
}
});
}
哦,变量名也不能大写。使用骆驼符号
关于ios - Xcode取消ViewDidAppear,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23597534/