在某些情况下,我遇到了奇怪的无限循环,将 setBackgroundView 用于 UITableView 外观。这是外观初始化:
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"bg"]];
[[UITableView appearance] setBackgroundView:iv];
我有一个控制器:
@interface MyController : UITableViewController
它只有带有简单日志记录的init
方法和viewWill*/viewDid*
委托。没有其他的。在这种情况下,我会收到关于布局子视图的无穷无尽的消息:
2013-06-05 21:23:45.054 MyApp[16700:c07] init
2013-06-05 21:23:45.056 MyApp[16700:c07] viewDidLoad
2013-06-05 21:23:45.057 MyApp[16700:c07] viewWillAppear
2013-06-05 21:23:46.059 MyApp[16700:c07] viewWillLayoutSubviews
2013-06-05 21:23:47.061 MyApp[16700:c07] viewDidLayoutSubviews
2013-06-05 21:23:48.064 MyApp[16700:c07] viewWillLayoutSubviews
2013-06-05 21:23:49.066 MyApp[16700:c07] viewDidLayoutSubviews
2013-06-05 21:23:50.067 MyApp[16700:c07] viewWillLayoutSubviews
2013-06-05 21:23:51.069 MyApp[16700:c07] viewDidLayoutSubviews
2013-06-05 21:23:52.070 MyApp[16700:c07] viewWillLayoutSubviews
如果我切换到:
@interface MyController : UIViewController
一切进行得都很顺利。
这是预期的行为(我没有清楚地理解 UIAppearance)还是功能损坏?
UPD:在 AppDelegate 中初始化的外观。
UPD2:无限循环仅发生在从另一个推送的表视图控制器上