2016-04-07 38 views
0

2 tip hücreye sahip özel bir UITableView var. Bir hücre sadece normal bir tip onay işareti aksesuarı arasında geçiş yapmak üzere ayarlanmıştır. Başka bir hücre aksesuar tipi olarak özel bir görüntüye sahip olacak şekilde ayarlanmıştır. Bu aksesuar görüntüsü seçildiğinde "Seçili" veya "Seçilmemiş" mesajını gösteren karşıt tipine dönüşür.neden UITableViewCell AccessoryView: Aksesuar aksesuarı UIImageView sonsuz döngüsüne eşittir

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

aşağıdaki gibi UIImageViews başlatılır konularda ise:

i kimse bu soruya cevap gördük
-(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

dedi: Kendi ama burada cevap anladım İhtiyacı olan herkes için: UIImageViews paylaşılamaz, böylece her bir görünür hücre için her bir UIImageView'ın farklı bir örneği gereklidir. Artık biliyorsun.

ama nedenini bilmiyorum?

cevap

0

UIView A yalnızca bir ana görünümün alt görünümü olabilir, bu nedenle UIImageView ürününü bir hücreye ekledikten sonra başkalarına eklemezsiniz.

UIImage bu sınırlama yoktur, bu yüzden yeni bir UIImageView her zaman dönmek böylece artık ya da mevcut yöntemler değiştirmek ne çizgisinde selectedImage ve unSelectedImage yöntemlerine sahip kodunuzu değiştirebilirsiniz.

+0

çok teşekkür ederim. :) –

İlgili konular