你们中有人知道是否可以取消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/

10-10 23:48