2016-04-07 6 views
0

私は2種類のセルを持つカスタムUITableViewを持っています。 1つのセルは、タイプチェックマークの通常のアクセサリの間を切り替えるように設定されています。別のセルはアクセサリタイプとしてカスタムイメージを持つように設定されます。アクセサリイメージが反対のタイプに変更されて選択されると、 "Selected"または "Unselected"メッセージが表示されます。それは次のようにUIImageViewsが初期化されている重要な場合なぜUITableViewCell AccessoryView:アクセサリビューをUIImageViewと同じに設定する無限ループ

if (self.selectedIndex == indexPath.row) { 
       cell.accessoryView = self.selectedImageView; 
      }else 
       cell.accessoryView = self.unSelectedImageView; 

-(UIImageView *)selectedImageView 
{ 
    if (!_selectedImageView) { 
     _selectedImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Check"]]; 
    } 
    return _selectedImageView; 
} 
-(UIImageView *)unSelectedImageView 
{ 
    if (!_unSelectedImageView) { 
     _unSelectedImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"noCheck"]]; 
    } 
    return _unSelectedImageView; 
} 

私は誰かがこの質問に答える見た:UITableCell AccessoryView: Setting accessoryView equal to UIImageView infinite loop

彼は言った:私はここに私自身の答えを考え出したが、していますUIImageViewsは共有することができないので、可視セルごとに異なるUIImageViewのインスタンス化が必要です。今あなたは知っている。

しかし、なぜわからないのですか?

答えて

0

UIViewは1つの親ビューのサブビューになることができるので、UIImageViewを1つのセルに追加すると他のセルに追加することはできません。

UIImageは、この制限はありませんので、あなたは彼らが新しいUIImageViewたびに返すようにあなたが今、あるいはあなたの現在の方法を変更したものの線に沿ってselectedImageunSelectedImageメソッドを持っているようにコードを変更することができます。

+0

ありがとうございます。:) –

関連する問題