0

MainMenuViewController 以模态方式呈现 BonusViewController。我想关闭 BonusViewController 然后显示一个新的 BonusViewController,有效地“重置”BonusViewController。

我使用通知在 MainMenuViewController 中调用此方法

-(void)resetBonus{



    [self dismissViewControllerAnimated:YES completion:nil];

    [self presentViewController: BonusViewController animated:NO completion:nil];


}

当我在上面的 presentViewController 调用中键入 BonusViewController 时,我希望它会被自动检测到,但事实并非如此,而且当我键入时,我的任何 viewController 都没有出现,我假设这意味着我做错了。我是否必须初始化 VC 或分配它才能像这样呈现它?或者我什至可以这样做,因为我使用故事板?

我也试过这个虽然我相信这种方法已被弃用

-(void)resetBonus{

    [self dismissModalViewControllerAnimated:YES];
    [self presentModalViewController: BonusViewController animated:NO ]; 

}

在此处输入图像描述

做了 Sumanth 的建议,但我现在收到了这条消息:

在此处输入图像描述

所以现在我在做:

#import "BonusViewController.h

....

-(void)resetBonus
{
BonusViewController  *bonus = [[BonusViewController alloc]init];
[self dismissModalViewControllerAnimated:NO];
[self presentModalViewController: bonus animated:NO ];

}

错误都消失了,但是当 BonusViewController 出现时,显示器是纯黑色的,我可以听到声音,但在屏幕上看不到任何东西

4

4 回答 4

1

也不要忘记在 .h 文件中写入 #import "BonusViewController.h"

BonusViewController  *objBonus = [[BonusViewController alloc]init]; 
[self dismissViewControllerAnimated:YES completion:NULL];
[self presentViewController:objBonus animated:YES completion:NULL];

您需要创建视图控制器的对象,并且直接传递视图控制器,这是不可能的

于 2013-01-23T11:07:39.300 回答
1

你应该分配和初始化视图控制器并使用presentModalViewController这样的写来呈现

BonusViewController  *bonus = [[BonusViewController alloc]init]; 
[self dismissModalViewControllerAnimated:YES];
[self presentModalViewController: bonus animated:NO ];
于 2013-01-23T10:14:57.790 回答
0

我确定给出的答案是正确的,但我无法让它们正常工作。由于某种原因,BonusViewController 似乎已显示,因为我可以听到声音,但屏幕是黑色的,并且没有任何视觉显示。

我最终暂时完成了以下操作,但这并不是我真正想要的平滑效果。

当我有更多时间找出更好的方法时,我必须重新访问它。

-(void)endBonus
{
    [self dismissViewControllerAnimated:NO completion:^{
        [self performSelector:@selector(resetBonus) withObject:nil afterDelay:1];
    }];

}
-(void)resetBonus
{
 [self performSegueWithIdentifier: @"segueToBonus" sender: self];
}
于 2013-01-23T16:41:09.750 回答
0
#import "BonusViewController.h"
-(void)resetBonus
    {
    BonusViewController  *BonusViewController = [[BonusViewController alloc]init];
        [self dismissViewControllerAnimated:NO completion:nil];
        [self presentViewController: BonusViewController animated:NO completion:nil];
    }

设置两个动画都是NO

编辑 :#import "BonusViewController.h"

于 2013-01-23T10:17:06.597 回答