通过singleViewController样式应用程序加载UIViewController视图

时间:2013-09-25 09:46:15

标签: ios ipad uiviewcontroller

我创建了一个基于视图的应用程序。我想要覆盖UIViewControllers,因为我需要它们,例如像模态视图那样,如果填充了一些值,则加载下一个视图,直到你在那里做某事,然后你就可以回来了。

这是我的代码

- (void) viewWillAppear:(BOOL)animated {

    NSMutableDictionary *tempPrefs = [prefsController readPrefs];
    NSString *tempName = [tempPrefs objectForKey:@"Name"];
    NSString *tempProduct = [tempPrefs objectForKey:@"Product"];


// usedbefore so skip first view (first view == login view
    if ((tempName.length != 0) && (tempProduct.length != 0)) {
        // you have values, enter new room without checking
        [self loadGetProListViewController];
    }
}

- (void) loadGetProListViewController {

    [self dismissViewControllerAnimated:NO completion:nil];
    getProListViewController = [[GetProListViewController alloc] initWithNibName:@"GetProListViewController" bundle:nil];
        [self presentViewController:getProListViewController animated:YES completion:nil];

}

然而,一旦达到此方法已执行但没有任何事情发生..

如果有人能告诉我如何创建模态viewControllers或一些非常感谢的描述。

2 个答案:

答案 0 :(得分:0)

首先,您应该了解UIViewController lifecycle,了解您可以在哪里展示不同的UIViewController

另外我猜你的架构有点不对(也许我错了)。

让我们假设你有firstViewController,你提出的-viewDidAppear方法getProListViewController

你不认为提出中间firstViewController是奇怪的吗?

我会让你的if条款升级。 F.e:

/ usedbefore so skip first view (first view == login view
if ((tempName.length != 0) && (tempProduct.length != 0)) {
   // present your getProListViewController
} else {
   // present your "FirstViewController" (login or whatever)
}

你在开始时没有遇到过你的问题

答案 1 :(得分:-1)

试试这个

    [self presentModalViewController: getProListViewController animated:YES];

而不是你的presentviewcontroller

    [self presentViewController:getProListViewController animated:YES completion:nil];