视图控制器未出现在iOS 5项目中

时间:2012-01-03 19:00:15

标签: objective-c ios xcode

我在Xcode 4.2(最近升级到Xcode 4.2和ios5)中启动了一个视图模板

所以现在我只有一个视图控制器。

我在项目中添加了一个新类,它是UIViewcontroller的子类。

现在在主控制器类viewdidLoad方法

- (void)viewDidLoad
{

    // Override point for customization after application launch.
    [super viewDidLoad];
    [self presentQuizcontroller];
}
-(void) presentQuizcontroller
{
    _QuizController = [[[Quiz alloc] initWithNibName:@"Quiz" bundle:nil] autorelease];
    _QuizController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:_QuizController animated:YES];        // Do any additional setup after loading the view, typically from a nib.

}

问题出在我的测验课

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

initWithNibName方法确实被调用(我使用断点检查)但它没有通过if(self)的条件。因此视图不会出现。

有什么想法吗?

修改

在第一个回答之后我也尝试过这种方式

- (void)viewDidLoad
{

    // Override point for customization after application launch.
        [super viewDidLoad];
}
-(void) presentQuizcontroller
{
    _QuizController = [[[Quiz alloc] initWithNibName:@"Quiz" bundle:nil] autorelease];
    _QuizController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:_QuizController animated:YES];        // Do any additional setup after loading the view, typically from a nib.

}
-(void) awakeFromNib
{
    [self presentQuizcontroller];

}

同样的事情Quiz.m initwithnib name方法不会传递条件if(self)。

2 个答案:

答案 0 :(得分:0)

我认为你需要使用awakefromnib。

如果您想阅读更多内容,请参阅另一篇StackOverflow帖子的Link

答案 1 :(得分:0)

  1. PresentModalViewController已弃用,我认为您现在应该使用presentViewController而不是它。

  2. 您确定“测验”是您文件的名称吗?该字符串应与xib文件的名称相同,即“QuizController”或“QuizViewController”

  3. 通过检查:

    确保xib文件正确连接到标头/实现文件
    • xib文件的所有者应设置为viewController

    • 在xib文件上查看(如果您有多个视图,则最重要的一个)应该连接到viewControllers视图。