не может отобразить UIImage один за другим - PullRequest
0 голосов
/ 08 марта 2012

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

Вот мой код:

- (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 после отображения первогоизображение, которое я пошлю, чтобы начать изображение другого изображения.

Ответы [ 2 ]

1 голос
/ 08 марта 2012

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

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 .. это скажет, является ли изображение представления изображения нулевым или нет ..

1 голос
/ 08 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...