1

我有一个应用程序,其中嵌套UITabBarController了一些,以及这些导航控制器内部的子类。当我尝试将新创建的导航控制器推送到其中包含现有 tableView 的现有导航控制器时,应用程序挂起,并且 Instruments 显示它通过调用来一遍又一遍地分配一些东西,不管那是什么。UINavigationControllerUITableViewControllerUITableViewController[UIWindow _subtreeMonitorsForView:]

我以一种非常简单的方式推动控制器,只是:

_orderForm = [[OrderFormViewController alloc] init];
[self.navigationController pushViewController:_orderForm animated:YES];

如果我改变它以便我推动一个平原UIViewController而不是一个桌子,它就可以了。也就是说,如果我只是将 OrderFormViewController.h 文件中的声明从UITableViewControllerto更改为UIViewController,它会向我显示空白视图,没有挂起。可能是什么问题呢?

注意,OrderFormViewController.h 的内容非常简单,只包含标准的内置函数。我尝试推送不同的子类UITableViewController(用于初始化 a 时工作正常UINavigationController),结果是相同的 - 应用程序挂起并不断消耗内存。

4

1 回答 1

1

我已经找到了这个问题的罪魁祸首以及其他一些类似的错误。这是我在实例化控制器之前在我的应用程序委托中执行此操作的事实:

UIView *bg = [[UIView alloc] initWithFrame:CGRectZero];
bg.backgroundColor = [UIColor whiteColor];
[[UITableView appearance] setBackgroundView:bg];

关于使用的一些东西[UITableView appearance]不能很好地与代码一起使用,包括无法UIDatePicker在任何变体中使用(尽管UIPickerView仍然有效,这只会让我更加困惑)。

出于某种原因,尽管听起来很有希望,但整个UIAppearance协议存在一些问题,这不是我第一次发现它是导致一些奇怪错误的原因。摆脱它可以让一切完美运行。

于 2013-02-05T15:35:03.350 回答