UITableView の外観に setBackgroundView を使用すると、奇妙な無限ループに直面することがありました。外観の初期化は次のとおりです。
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 : エンドレス ループは、別のビュー コントローラーからプッシュされたテーブル ビュー コントローラーでのみ発生します。