2012-03-08 3 views
0

Я как бы застрял с этого утра ... Я пытаюсь загрузить изображение после другого изображения, но ... он не работает ... у меня даже нет моего первого изображение, отображаемое ...не может отображать UIImage один за другим

Существует мой код:

- (void) checkResources 
{ 

    NSString *bundleRoot = [[NSBundle mainBundle] bundlePath]; 
    NSFileManager *manager = [NSFileManager defaultManager]; 
    NSDirectoryEnumerator *direnum = [manager enumeratorAtPath:bundleRoot]; 


    NSString *cuttedName; 
    NSString *cuttedName1; 



    for (NSString *path in direnum) 
    { 

     if ([[path pathExtension] isEqualToString:@"mp4"]) 
     { 
      cuttedName1 = [path stringByReplacingOccurrencesOfString:@"ressources/" withString:@""]; 
      cuttedName = [cuttedName1 stringByReplacingOccurrencesOfString:@".mp4" withString:@""]; 
      if ([cuttedName isEqualToString:[NSString stringWithFormat:@"%d", num]]) 
      { 
       NSString *media = [NSString stringWithFormat:@"%@/%@", bundleRoot, path]; 
       [self startSlideShow:media]; 
      } 
     } 
     else if ([[path pathExtension] isEqualToString:@"mov"]) 
     { 
      cuttedName1 = [path stringByReplacingOccurrencesOfString:@"ressources/" withString:@""]; 
      cuttedName = [cuttedName1 stringByReplacingOccurrencesOfString:@".mov" withString:@""]; 
      if ([cuttedName isEqualToString:[NSString stringWithFormat:@"%d", num]]) 
      { 
       NSString *media = [NSString stringWithFormat:@"%@/%@", bundleRoot, path]; 
       [self startSlideShow:media]; 
      } 
     } 
     else if ([[path pathExtension] isEqualToString:@"png"]) 
     { 
      cuttedName1 = [path stringByReplacingOccurrencesOfString:@"ressources/" withString:@""]; 
      cuttedName = [cuttedName1 stringByReplacingOccurrencesOfString:@".png" withString:@""]; 
      if ([cuttedName isEqualToString:[NSString stringWithFormat:@"%d", num]]) 
      { 
       NSString *media = [NSString stringWithFormat:@"%@/%@", bundleRoot, path]; 
       num++; 
      [self startImage:media]; 
      } 
     } 
    } 

} 
- (void) startImage:(NSString *)nameFile 
{ 
    CGRect myImageRect = CGRectMake(0, 0, 200, 500); 

    UIImageView *imageView; 
    imageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
    [imageView setImage:[UIImage imageNamed:@"0.png"]]; 
    NSLog(@"IAMGE %@", imageView.image); 
    [self.view addSubview:imageView]; 
    [self performSelector:@selector(checkResources) withObject:nil afterDelay:10]; // this will give time for UI to update itself.. 
    [imageView release]; 

    } 

- (void) startSlideShow:(NSString *)nameFile 
{  
    NSURL *url = [NSURL fileURLWithPath:nameFile];//[[NSBundle mainBundle] pathForResource:@"2" ofType:@"mov"]]; 




    MPMoviePlayerController *moviePlayer = 
    [[MPMoviePlayerController alloc] initWithContentURL:url]; 
    // NSLog(@" URL : %@", url); 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(moviePlayBackDidFinish:) 
               name:MPMoviePlayerPlaybackDidFinishNotification 
               object:moviePlayer]; 
    moviePlayer.view.frame = CGRectMake(0, 0, 500, 600); 

    moviePlayer.controlStyle = MPMovieControlStyleDefault; 
    moviePlayer.shouldAutoplay = YES; 
    [self.view addSubview:moviePlayer.view]; 
    [moviePlayer setFullscreen:YES animated:YES]; 
    } 



-(void)moviePlayBackDidFinish: (NSNotification*)notification 
{ 
    MPMoviePlayerController *moviePlayer = [notification object]; 

    [[NSNotificationCenter defaultCenter] removeObserver:self  
                name:MPMoviePlayerPlaybackDidFinishNotification 
                object:moviePlayer]; 

    if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)]) 
    { 
     // [moviePlayer.view removeFromSuperview]; 
    } 


    //[[moviePlayer release] addAnimation:animation forKey:kCATransition]; 


    num++; 
    [self checkResources]; 
} 

не возражает о цели моего кода :) я просто хочу, чтобы отобразить UIImage, а затем, когда вызывается после того, как отображаются метод checkResources первое изображение, которое я отправлю, начнется с другого изображения.

ответ

1

2 основные проблемы, которые могут быть в вашем коде .. никакая другая проблема может быть.

1) Ваш пользовательский интерфейс не обновляется из-за непрерывных методов addSubview ..

2) Ваш UIImage является недействительным ..

Для проверки 1)

изменение

[self checkResources]; 

до

[self performselector:@selector(checkResources) withObject:nil afterDelay:3] // this will give time for UI to update itself.. 

Использование автозаполнения для кода выше ... может быть орфографические ошибки ..

Чтобы проверить 2)

просто NSlog imageview.image .. это покажет, если посмотреть изображение изображение является пустым или нет ..

+0

Хорошо, но у меня все еще есть проблема. Я пытаюсь объяснить, что я делаю: checkRessources call firstly my method "startImage: (NSString *) nameFile" Тогда, когда startImage завершен, я делаю то, что вы сделали, тогда вызывается checkRessources, но теперь checkRessource будет загружаться другой метод, который отображает видео. Проблема заключается в следующем: видео отображается без отображения вначале изображения ... это похоже на то, что видео не дает достаточно времени, чтобы отображалось изображение uimage – user1256827

+0

, если я не загружаю метод воспроизведения видео, изображение хорошо загружен и отображен – user1256827

+0

изменить задержку на большее значение .. и повторить попытку .. другой мудрый опубликовать весь ваш код .. из обеих функций – Shubhank

1

Если это ваш настоящий код, у вас есть бесконечный цикл. Один метод вызывает другой. в противном случае: где проблема?

+0

это действительно мой настоящий код, после загрузки изображения checkRessource загрузит другой метод, который отображает видео. – user1256827

+0

, пожалуйста, покажите код WHOLE для проблемы и задайте более конкретный вопрос. мы не можем так любить. – calimarkus

+0

Я отправил весь код. спасибо за помощь – user1256827