2013-10-30 22 views
8

Tablo görünümü hücrelerime altyazı eklemeye çalışıyorum ancak görüntülenmiyorlar. Hata nerede? [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle] iOS 7 ile aynı zamanda güncel mi?Tablo görünümü altyazıları IOS7'de

Saygılarımızla

Frank


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    if (!cell) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = @"TestA"; 
    cell.detailTextLabel.text = @"TestB"; 

    return cell; 
} 
+0

ile cep sınıf kaydetmek ben mi. Storyboard/Xib dosyasını kullandınız mı? Orada bir hücre prototipi koyduğundan emin ol. –

+0

Bu kodun yalnızca ana başlığın gösterilmesine değil, her satırın altyazısına neden olduğunu mu söylüyorsunuz? Hepsi kodda mı yoksa prototip hücreler mi kullanıyorsunuz? – rmaddy

cevap

5

Bu kod: dequeueReusableCellWithIdentifier: forIndexPath: yeni bir hücreye belirlenmesi garanti çünkü

if (!cell) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
} 

yürütmek asla.

Ne yazık ki, registerClass:forCellReuseIdentifier:, UITableViewCellStyle belirtmenize izin vermez.

dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath ürününü yalnızca dequeueReusableCellWithIdentifier:CellIdentifier numaralı telefondan yapabilirsiniz. Bu yöntem, bir hücrenin iade edileceğini garanti etmez. * Olmadığında, kodunuz istediğiniz stilde yeni bir hücre oluşturur.


* - (rdelmar işaret ettiği gibi Size, Bir film şeridi kullanıyorsanız eğer, ama bu durum burada değil.) Ben benzer bir sorun vardı ve internette hiçbir çözüm için çalışmış

+1

"Bu yöntem, bir hücrenin iade edileceğini garanti etmez" - mutlaka doğru değil.Hücre film şeridinde yapılmışsa, bu yöntemin bir hücreyi iade etmesi de garanti edilir. – rdelmar

+0

Eğer bir class veya nib tablosunu tablo ile kaydettiyseniz, otomatik olarak bir örneğini döndürür ve hücre hiçbir zaman sıfırlanmaz. – estobbart

0

ben mi. Bir aptal olduğum ortaya çıktı. Çözümüm, başka birinin benzer bir senaryoyu tecrübe etmesi durumunda yayınlayacağım.

Sana protoptype hücre seçin ve seçtiğinizden emin olun, bir prototip oluşturdunuz.END_PARAGRAPHSTART_PARAGRAPHArtık film şeridi kullandığınızı varsayarak ve belge anahataltyazı için storyboardlar olarak

stili ayarlamak am altyazı. Görüntüyü bakınız:

enter image description here


Şimdi etiket font color bir doğa arka planınızda bu bize görünür olmasını sağlayın!

0

Basitçe alt sınıf UITableViewCell ve

[super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier]; 

olmanın ilk satırı ile

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

geçersiz Ve doğru bakar tablo görünümünde

[tableView registerClass:[YourCellSubclass class] forCellReuseIdentifier:@"YourCellID"];
1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath { 
UITableViewCell *cell = nil; 
cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 
if (cell == nil) 
{ 
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; 
} 
cell.textLabel.text = @"Title1"; 

cell.detailTextLabel.text = @"Subtitle 1"; 

return cell; 
} 
+0

cevapları, çözümün bir açıklamasını içermelidir. – Enkode

+0

Hücreyi Inspector görünümünden bir tanımlayıcıya verin ve bu kodu ** cellForRowAtIndexPath ** 'a yazın, burada ** cel.detailTextLabel.text ** altyazıdır. – Jamil

İlgili konular