2010-06-18 5 views
0

내 코드에 문제가 있습니다. 올바르게 실행되지 않는 것 같습니다.UIImageView에 URL을로드 할 때 코드가 예상대로 실행되지 않습니다.

나는 등 UIActivity, 슬라이더, UITextVieweer에서 많은 것들을 시도했습니다 ... 그러나 그것은 결코

코드는 엑스 코드에서 탐색 기반 응용 프로그램을 사용하여 실행되고, 변경되지 않습니다. loadingTview는 Textview,

입니다. 문제는 loadingTview가 작동하지 않으며 항상 멈추고 사용자가 버튼을 누르고이 코드가 실행된다는 것입니다. loadingTview는 0.4의 alpha로 "로딩"을 말하는 Textview입니다. 다운로드하는 이미지는 웹 사이트를 형성하는 반면, 사람들은로드를 알고 있습니다.

같은 문제가 있지만보기도 시도했습니다.

어떻게 진행할 수 있습니까?

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]; 
} 

답변

0

전적으로 어떤 문제인지는 모르겠지만 view2에서 view3으로 이동하면 view3이 실제로 로딩 화면을 표시하기 전에 이미지가로드 될 때까지 view2에 '고정'됩니다.

그런 경우,로드하려는 이미지가 다른 스레드에로드되어로드로 인해 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. 
} 

을이 당신이 가지고있는 문제가 아닌 경우, 실제로 무슨 일이 일어나고 있는지에 어떤 문제가 아니라 자세한 내용을 제공하십시오.

행운을 빈다.

+0

좋아요! 그게 바로 문제가 무엇인지 :) 아, 오늘 밤에 NSThread에 관한 문서를 읽었습니다! – user370507

0

나는 정말로 당신의 질문을 이해하지 못하지만, 나는 거의 틀린 것을보고 있습니다. 이 라인 :

if (PageEntered == @"page1") 

이 같아야합니다

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

오브젝티브 C는 코드가 포인터 비교가 아닌 값의 비교를하고 있으므로, 연산자 오버로딩을하지 않습니다.

+0

고마워요, 지금 당장 변경하십시오. 내 문제에 대해 자세히 설명해주십시오. 나는 네비게이션 컨트롤러를 사용하는 어플리케이션을 가지고있다. 3 개의 View 컨트롤러가 있습니다. View1 View2 View3은 말합니다. 사용자가 View1의 단추를 클릭하면 view2로 이동 한 다음 사용자가 view2의 단추를 클릭하면 view3으로 이동합니다. view3에는 인터넷의 데이터를로드하는 큰 이미지 파일 인 UIImageViewer가 있습니다. 내가 원하는 건, 사용자가 뷰 2에서 버튼을 핥을 때 이미지가 다운로드 된 후 다운로드 페이지가 표시되고로드 된 이미지를 제거하고 뷰 3을 표시하는 것입니다. – user370507

관련 문제