【问题标题】:UIWindow not getting set when pushing UIViewController from Nib从 Nib 推送 UIViewController 时未设置 UIWindow
【发布时间】:2011-09-13 16:57:50
【问题描述】:

我正在尝试使用从 nib 创建的视图控制器来做一个非常简单的 pushViewController。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
ServiceDetailViewController *serviceDetail = [[ServiceDetailViewController alloc] initWithNibName:@"ServiceDetailViewController" bundle:nil];
serviceDetail.employee = _employee;

[self.navigationController pushViewController:serviceDetail animated:YES];
previousSelectedRow = indexPath;
}

如果我在其 viewDidLoad 或其函数内的任何其他位置返回 serviceDetail 视图控制器的窗口,则它为空。当我在 pushViewController 之后立即返回它的窗口时,它很好。

我的 viewDidLoad 是正常的。我叫超级。

这似乎是我忽略了一些愚蠢的事情,我的 splitViewController 设置有问题,或者是 xCode 4/ARC 中的错误。

我知道我可能需要提供更多代码,但我希望有人可能有想法。

【问题讨论】:

    标签: ios uiviewcontroller uinavigationcontroller


    【解决方案1】:

    viewDidLoad 在视图加载到内存之后,但在视图添加到视图层次结构(包括支持窗口)之前被调用。 viewDidAppear 方法在添加到窗口后立即调用。也许您需要窗口值的代码在该方法中会更好地工作。

    【讨论】:

    • 所以我有一个 UIButton 的子类,我用它来显示一个弹出框。它有一个我分配的“presenterView”iVar,然后在其上显示弹出框。我已经尝试在 viewDidLoad 和 viewDidAppear 和 UIWindow 中设置presenterView 始终为零。这会导致以下错误:“无法从没有窗口的视图中呈现弹出框。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多