所以我试图完成我几年前开始使用的iPhone应用程序。无论如何,我有一个选项菜单,您可以从中创建自定义级别(进入另一个视图)。然后当我返回主菜单,然后是选项菜单时,它只显示一个黑屏。
// shows options menu, works the first time
-(void) options : (id) sender{
[self.menuViewController.view removeFromSuperview];
[self.bg.view removeFromSuperview];
[self transition:self.view :navController.view];
}
// goes to custom built level
- (void) createCustom : (int) colorCount : (int) width : (int) height : (int) shuffles : (int) partners : (ToggleMode) toggleMode : (BOOL) colorblind{
self.gameViewController.isCustom = true;
self.gameViewController.width = width;
self.gameViewController.height = height;
self.gameViewController.shuffles = shuffles;
self.gameViewController.partners = partners;
self.gameViewController.toggleMode = toggleMode;
self.gameViewController.colorCount = colorCount;
srandom(arc4random());
[self.navController setNavigationBarHidden:true];
[self.gameViewController goToLevel];
[self transition:self.optionsMenu.customLevel.view : gameViewController.view];
}
- (void) transition : (UIView *) fromView : (UIView *) toView{
[UIView transitionFromView:fromView toView:toView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight completion:NULL];
}
当我打印出所涉及的物体时,它们似乎仍然在那里,所以我不知道为什么它只是显示黑色。请帮我完成这个应用程序!
答案 0 :(得分:0)
为什么不使用ModalViewController显示您的选项菜单?它将显示在您现有的ViewController之上,并且不会解除/取消它。这也将消除在转换之前手动删除视图和查看控制器的需要,这可能是导致黑屏问题的原因。您可以在此模式上添加一个按钮,以便在用户查看完选项后将其关闭。
另外,作为目标c的一般要点,为了让您的生活更轻松,您应该遵循正确的命名方法格式。这涉及在每个参数之前放置参数的名称,以使调用方法更加容易混淆。举个例子:
- (void)createCustom:(int)colorCount
:(int)width
:(int)height
:(int)shuffles
:(int)partners
:(ToggleMode)toggleMode
:(BOOL)colorblind {
}
会变成类似的东西:
- (void)createCustomColorCount:(int)colorCount
withWidth:(int)width
withHeight:(int)height
withNumberOfShuffles:(int)shuffles
WithNumberOfPartners:(int)partners
withToggleMode:(ToggleMode)toggleMode
setColorBlind:(BOOL)colorblind {
}
为了说明这有用的原因,下面是一个如何调用方法的示例:
[self createCustom:0
:100
:100
:5
:5
:nil
:NO];
与
[self createCustomColorCount:0
withWidth:100
withHeight:100
withNumberOfShuffles:5
WithNumberOfPartners:5
withToggleMode:nil
setColorBlind:NO];
正如您在第二种方法中所看到的,更清楚的是每个参数值对应的内容,而不必回到方法的实现。