UITableViewControllerで、いくつかのセルがaccessoryViewによって強調表示されているUITableViewCellsをインスタンス化しています。私にとって、これは機能します:
// works for me
UIImageView *favoriteImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];
[cell setAccessoryView:favoriteImageView];
複数のセルに対して同じビューを繰り返しインスタンス化するのは無駄に思えます。ただし、複数のセルのaccessoryViewと同じビューを再利用しようとすると、アプリが悲惨な方法で失敗します(完全に黒い画面、ビューが表示されない)デバッグできませんでした。のようなメソッド内でfavoriteImageViewを静的として宣言するかどうか
// doesn't work for me
static UIImageView *favoriteImageView = nil;
if (!favoriteImageView)
favoriteImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];
[cell setAccessoryView:favoriteImageView];
または、それをivarとして宣言し、initで定義して、次のようにします。
// doesn't work for me
[cell setAccessoryView:[self favoriteImageView]];
これらの2つの機能しないケースでは、1つのセルにaccessoryViewが設定されていると、正しく表示されます。アクセサリビューが同じビューを参照するように設定されるように2番目の行をマークするとすぐに、すべてがハングアップします。
同じUIViewが複数のUITableViewCellのaccessoryViewとして参照されるように、UIViewを構築したり、UITableViewCellを構成したりするための要件は何ですか?