我已将多个操作添加到一个按钮
按钮正在播放音频文件但不显示视图。
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];
}
任何建议我在代码中缺少或做错了。
感谢您的帮助。
答案 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...来表示动画效果。