0

我创建了一个基于单一视图的应用程序。我想在需要时覆盖 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];

}

但是,一旦达到此方法,它就会执行,但什么也没有发生..

如果有人能告诉我如何创建模态视图控制器或一些将不胜感激的描述。

4

2 回答 2

0

首先,您应该了解UIViewController 生命周期,以了解您可以在哪里呈现不同的UIViewController

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

让我们假设您在哪个 -viewDidAppear 方法上有 firstViewControllergetProListViewController

你不觉得呈现中间体firstViewController很奇怪吗?

我希望你会移动你的if条款来升级。铁:

/ 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)
}

而你一开始并没有面对你的问题

于 2013-09-25T10:24:49.620 回答
-1

尝试这个

    [self presentModalViewController: getProListViewController animated:YES];

而不是你的presentview控制器

    [self presentViewController:getProListViewController animated:YES completion:nil];
于 2013-09-25T09:50:12.873 回答