Kullanarak 6 UİTableView dequeueReusableCellWithİdentifier iOS ne zaman UİTableViewCell stil ayarı:forİndexPath:
UITableView
iOS 6'da yeni yöntemleri kullanarak UITableViewCellStyle
ayarlamak için nasıl çalışmak için çalışıyorum.
Daha önce, zaman yaratma UITableViewCell
değiştirir UITableViewCellStyle
numaralama oluşturmak için farklı varsayılan hücre çağırırken initWithStyle:
ama ne yapabilirim toplamak, bu artık durum.
UITableView
Dokümantasyon Apple Devletleri:
Değeri Döndürür: Bir UİTableViewCell ilgili yeniden tanımlayıcısı nesne. Bu yöntem her zaman geçerli bir hücre verir.
Tartışma: Performansı artırmak, görünümü veri kaynağı genellikle tableView satır hücreleri atarken UİTableViewCell nesneleri yeniden bir tablo için:cellForRowAtİndexPath: yöntem. Bir tablo görünümü veri kaynağı yeniden kullanım için işaretlenmiş olan bir UİTableViewCell nesnelerin sıra ya bir listesini tutar. Tablo için yeni bir hücre görünümü sağlamak için sorulduğunda veri kaynağından bu yöntem nesne arayın. Bu yöntem, eğer varsa varolan bir hücre dequeues ya da yeni bir tane daha önceden kayıtlı bir sınıf veya uç dosyası oluşturur.
ÖnemliBir sınıf kaydetmek veya dosya registerNib kullanarak uç gerekir:forCellReuseİdentifier:: forCellReuseİdentifier registerClass: önce bu yöntem arıyorum. yöntem
Belirtilen tanımlayıcı bir sınıf ve yeni bir hücre eğer bir kayıt oluşturulmalıdır, bu yöntemi kendi initWithStyle arayarak cep başlatır:reuseİdentifier: yöntem. Uç tabanlı hücreleri için, bu yöntem sağlanan uç dosyasından hücre nesnesi yükler. Eğer varolan bir hücre yeniden kullanım için kullanılabilir, Bu yöntem, hücrenin prepareForReuse yöntemi yerine çağırır.
Bu cellForRowAtIndexPath
benim yeni yeni yöntemler kullanıldıktan sonra nasıl göründüğü
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell_identifier";
[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellIdentifier];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
return cell;
}
Şimdiye kadar sahip olduğum kod sorunsuz çalışıyor ama her zaman varsayılan stil verir. NasılUITableViewCellStyleDefault
, UITableViewCellStyleValue1
, UITableViewCellStyleValue2
ve UITableViewCellStyleSubtitle
gibi diğer stilleri ile hücreleri oluşturmak, böylece bu değiştirebilir miyim?
UITableViewCell
, ben sadece iOS 6 önce yapabileceğim varsayılan türünü değiştirmek istiyorum alt etmek istemiyorum. Apple ama en az belgeleri ile bunların uygulanmasını desteklemek için geliştirilmiş yöntemler sağlayacak tuhaf görünüyor.
Herkes bu hakim ya da benzer bir sorun için bir çalışma var mı? Makul herhangi bir bilgi bulmak için mücadele ediyorum.
CEVAP
Bir alt sınıf oluşturmak için istemediğini söylediğini biliyorum, ama kaçınılmaz görünüyor. İOS test sırasında montaj koduna göre 6.0 simülatörü UITableView
yaparak UITableViewCell
yeni örneklerini (ya da alt) oluşturur
[[<RegisteredClass> alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:<ReuseIdentifier>]
Diğer bir deyişle, stil gönderdi (UITableViewCellStyleDefault
) kodlanmış görünüyor. Bunu çözmek için, varsayılan başlatıcı initWithStyle:reuseIdentifier:
geçersiz kılar ve kullanmak istediğiniz stili geçen bir alt sınıf oluşturmak için ihtiyacınız olacak:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
// ignore the style argument, use our own to override
self = [super initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseIdentifier];
if (self) {
// If you need any further customization
}
return self;
}
Ayrıca, daha iyi bir hücre istenen her seferinde yapmak yerine viewDidLoad
registerClass:forCellReuseIdentifier:
göndermek için olabilir:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView registerClass:<RegisteredClass> forCellReuseIdentifier:<ReuseIdentifier>];
}
Dinamik hücre düzenleri için UİTableVi...
Ne zaman bir form's opaklık ayarı...
Nasıl stil için onay kutusunu kullanar...
Neden stil iOS7 içinde UİTableViewStyl...
DequeueReusableCellWithİdentifier onay...