按钮不显示视图

时间:2012-02-04 18:36:56

标签: iphone ios4

我已将多个操作添加到一个按钮

  1. 播放audiofile
  2. 显示视图数组
  3. 按钮正在播放音频文件但不显示视图。

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

    播放暂停操作编码

    -(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 个答案:

答案 0 :(得分:1)

以下是您应该做的一些小修正 - 他们可能并不全都帮助解决问题,但您永远不会知道。

在此处添加完成块:

[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 - 它可能会被释放,因为它没有被使用。

答案 1 :(得分:0)

我认为问题出在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...来表示动画效果。