presentModalViewController问题

时间:2010-12-30 08:13:06

标签: ios4 uiviewcontroller presentmodalviewcontroller

我正在编写一个iPhone应用程序,您需要在开始时进行身份验证。 因此,只要在viewDidLoad中加载应用程序,我就会分配一个负责注册和身份验证的UIViewController,并且我这样表示:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.registerProfile = [[[RegisterViewController alloc] initWithNibName:@"RegisterProfile" bundle:nil] autorelease];
    [self presentModalViewController:self.registerProfile animated:YES];
    [self.registerProfile release];
 }

由于某种原因,从viewDidLoad调用它时它不起作用。 但是,如果我在该视图上创建一个按钮并在上面附加相同的代码,当我点击它时, 它有效并且呈现了视图。

任何想法为什么它不能在viewDidLoad上工作并且使用按钮呢?

我还测试了一个名为NavBar的Apple示例。当单击一个按钮时,它使用presentModalViewController呈现一个视图,当我将它添加到ViewDidLoad时,它不起作用!

我在这里缺少什么?我希望在加载视图时自动执行该过程,而不是按下按钮。

谢谢!

2 个答案:

答案 0 :(得分:1)

在玩完并搜索深层网络后,我找到了解决方案。 将相同的代码放在 viewDidAppear 中,而不是viewDidLoad,因为视图无法初始化。

答案 1 :(得分:0)

我碰巧有一个与上面几乎完全相同的代码,它运行正常。尝试这样做:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.registerProfile = [[[RegisterViewController alloc] initWithNibName:@"RegisterProfile" bundle:nil] autorelease];
    registerProfile.delegate = self; //set delegate as yourself
    [self presentModalViewController:self.registerProfile animated:YES];
    //[self.registerProfile release]; //don't worry about releasing it, it's been autoreleased.
 }