кнопка не отображает виды - PullRequest
1 голос
/ 04 февраля 2012

Я добавил несколько действий к одной кнопке

  1. Воспроизвести аудиофайл
  2. Отображение массива представлений

Кнопка воспроизводит аудиофайл, но не отображает представления.

UIButton *playpauseButton = [UIButton buttonWithType:UIButtonTypeCustom];

[playpauseButton addTarget:self action:@selector(playpauseAction:) forControlEvents:UIControlEventTouchUpInside];

[playpauseButton addTarget:self action:@selector(displayviewsAction:) forControlEvents:UIControlEventTouchUpInside];

playpauseButton.frame = CGRectMake(0, 0, 50, 50);

[playpauseButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];

[playpauseButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected];

UIBarButtonItem *playpause = [[UIBarButtonItem alloc] initWithCustomView:playpauseButton];

Воспроизведение Pause Action coding

-(void)playpauseAction:(id)sender 
{

if  

  ([audioPlayer isPlaying]){

 [sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];

      [audioPlayer pause];

  } else {

 [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];

      [audioPlayer play];

  }  

}

DisplayviewsAction coding

- (void)displayviewsAction:(id)sender
{

CGRect pageViewRect = self.view.bounds;

pageViewRect = CGRectInset(pageViewRect, 30.0, 30.0);

self.pageViewController.view.frame = pageViewRect;

// Configure the page view controller 
   UIPageViewController *pageViewController = [[[UIPageViewController alloc]   initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]autorelease];

NSArray *viewControllers = [NSArray arrayWithObject:pageViewController]; 

[self.pageViewController setViewControllers:viewControllers
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];

[self.view addSubview:self.pageViewController.view];

}

Любой совет, что мне не хватает в коде или делает неправильно.

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

Вот некоторые незначительные исправления, которые вы должны сделать - они могут не все помочь с проблемой, но вы никогда не знаете.

Добавьте блок завершения здесь:

[self.pageViewController setViewControllers:viewControllers
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];

Не помню точно, но я думаю, что setViewControllers выполняется асинхронно - ничего нельзя добавить, пока не будет завершен обработчик завершения. Чтобы добавить блок, вы просто помещаете ^ и блок кода (как обычный метод):

[self.pageViewController setViewControllers:viewControllers
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:^{
   // your code here.
}];

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

Вы также должны ставить NSLog в начале каждого метода, по крайней мере, до тех пор, пока не закончите отладку. Таким образом, вы всегда знаете, что называется, а что нет. Если он не вызывается, попробуйте удалить autorelease из pageViewController - он может быть освобожден, потому что он не используется.

0 голосов
/ 04 февраля 2012

Я думаю, что проблема в displayviewsAction, попробуйте что-нибудь более простое, как:

- (void) displayviewsAction:(id)sender
{
    UIView* testView = [[UIView alloc] initWithFrame:CGRectInset(self.view.bounds, 30.0, 30.0)];
    testView.backgroundColor = [UIColor greenColor];
    [self.view addSubview:testView];
    [testView release];
}

Это должно помочь вам сузить проблему. В зависимости от вашей конечной цели вам могут не понадобиться все эти контроллеры представления; вместо этого рассмотрим UIView transitionFromView ... для эффектов анимации.

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