将URL加载到UIImageView时,代码未按预期执行

时间:2010-06-18 17:18:24

标签: iphone objective-c

我的代码出现问题,似乎它从未正确执行。

我尝试过UIActivity,Sliders,UITextVieweer等许多东西......但它永远不会改变,

代码正在使用xCode中基于导航的应用程序运行。 loadingTview是一个Textview,

问题是,看看loadingTview在哪里,从不起作用,它总是挂起,用户按下按钮,然后执行此代码。 loadingTview是一个Textview,说“加载”的alpha值为0.4,所以基本上是从网站上下载图像,人们知道它的加载。

我也试过了同样的问题。

我如何进步?

loadingTview.hidden = false;
today = [NSDate date];
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
dateString = [dateFormat stringFromDate:today];


if (PageEntered == @"page1")
{
    NSString *url = [NSString stringWithFormat:@"http://www.imagegoeshere.com/%@.jpg",dateString];  
    imageURL = [NSURL URLWithString:url];
    imageData = [NSData dataWithContentsOfURL:url];
    image = [UIImage imageWithData:imageData];
    FullScreenImage.image = image;
    loadingTview.hidden = true;
    [navigationController pushViewController:vFullscreen animated:YES];
}

2 个答案:

答案 0 :(得分:0)

我真的不明白你的问题,但我确实看到的东西几乎肯定是错的。这一行:

if (PageEntered == @"page1")

应该是这样的:

if ([PageEntered isEqualToString:@"page1"])

Objective-C不执行运算符重载,因此您的代码正在进行指针比较,而不是值比较。

答案 1 :(得分:0)

我不完全确定问题是什么但是我假设当你从view2转到view3时它会在view2上“挂起”,直到在实际打开view3之前加载图像才显示加载屏幕,对吗?

如果是这种情况,那么您要做的是将图像加载到不同的线程中,以便加载不会阻止view3显示加载屏幕。

看一下NSThread(虽然有更干净/更好的方法)。

基本上在view3的控制器中执行此操作:

- (void) viewDidLoad { 
    // <First, show your 'Loading...' screen here>
    // Then create a thread to load the image:
    [NSThread detachNewThreadSelector:@selector(loadImage) toTarget:self withObject:nil];   
}

// Then somewhere in the same class define the loading method:
- (void)loadImage {
    // Remember to create a new autorelease pool for this thread.
    // <Load your image here>

    // When image is done loading, call the main thread
    [self performSelectorOnMainThread:@selector(imageDoneLoading) withObject:nil waitUntilDone:YES];
}

// Then define the method to call when the image is done
- (void) imageDoneLoading {
    // Hide the 'Loading...' screen.
}

如果这不是您的问题,请详细说明实际发生的情况以及问题所在。

祝你好运。