Ayrı temsilci kullanırken UİTableView sorunu/kaynağı
Genel Açıklama:
İşleri ne ile başlamak için, böyle büyük mükafat tarafından oluşturulan bir görünüm üzerine yerleştirilen UITableView
Interface Builder kullanarak var. Görünümün Dosya Sahibi UIViewController
Güncellemelerinden tarafından oluşturulan bir alt kümesidir. Bu alt sınıf var eklenen çalışma uygulamaları numberOfSectionsInTableView: tableView:numberOfRowsInSection:
tableView:cellForRowAtIndexPath:
ve Tablo Görünümü dataSource
delegate
bağlı olan bu sınıf üzerinden Dosya Sahibi Interface Builder.
Yukarıdaki yapılandırma herhangi bir sorun ile çalışır. Bu sorun oluştuğunda istiyorum taşımak bu Tablo manzara dataSource
delegate
-uygulamaları için ayrı bir sınıf, büyük ihtimalle çünkü diğer kontrolleri üzerinde Görünümü dışında Tablosunu görmek istiyorum hareket Tablosu Görünümü ile ilgili kod için kendi sınıf. Bunu yapmak için, aşağıdakileri deneyin:
- Böyle büyük mükafat
UITableViewController
yeni bir alt sınıf oluşturun - Yeni alt
numberOfSectionsInTableView:
,tableView:numberOfRowsInSection:
tableView:cellForRowAtIndexPath:
bilinen-iyi uygulamaları taşıyın - En üst seviyeye
UITableViewController
sürüklemevcutInterfacebuilder'ı içinde XİB, sil otomatik olarak oluşturulan 18*/UITableView
*bunun içinUITableViewController
UITableViewController
yeni alt maç için's sınıfı - Daha önce işçi çıkarmak**22'
dataSource
delegate
s bağlantıları mevcut veUITableViewController
yeni bağlayın
Tamamlandığında, UITableView
bir çalışma yok. Yukarı görünüşte rastgele meydana gelebilecek üç sonuçtan biri ile bitiriyorum:
UITableView
yüklediğinde, çalışma zamanı bir hata tanımıyor hangi bir nesneyetableView:cellForRowAtIndexPath:
gönderiyorum belirten alıyorumUITableView
yüklediğinde, proje hata ayıklayıcıya keser- Hata yok, ama
UITableView
görünmüyor
Bazı hata ayıklama ve temel bir proje sadece bu sorunu yeniden oluşturmak için oluşturulan sahip, genellikle 3. yukarıda (hiçbir hata ama görünür bir tablo görünümü) seçeneğini görüyorum. Bazı NSLog aramalar ekledim ve numberOfSectionsInTableView:
numberOfRowsInSection:
, cellForRowAtIndexPath:
"değil," ikimiz birden halde bulundu. Çok basit bir şey eksik ben ikna oldum ve cevabını benden çok daha fazla tecrübesi olan biri için fark edilmesi umuyordu. Eğer bu kolay bir cevap olabilir değil mi eğer bazı kod veya örnek bir proje ile güncelleme için mutlu olurdu. Zaman ayırdığınız için teşekkürler!
Tam adımlar için oluşturma:
- Yeni iPhone OS oluşturun Tabanlı bir Görünüm Güncellemelerinden Uygulama ve
TableTest
Ara - Interface Builder
TableTestViewController.xib
UITableView
sağlanan görünümü üzerine bir yüzeyi sürükleyin. UITableView
'38 *s* ve 39 *-çıkışları*zatenTableTestViewController
sınıfı temsil edecek olan Dosyanın Sahibi için takın. Yaptığınız değişiklikleri kaydetmek- Tekrar böyle büyük mükafat,
TableTestViewController.m:
aşağıdaki kodu ekleyin
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
NSLog(@"Returning num sections");
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"Returning num rows");
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Trying to return cell");
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
cell.text = @"Hello";
NSLog(@"Returning cell");
return cell;
}
Yapı ve
Hello
UITableView
görünür kelime görmelisinizŞimdi
UITableView
bu hareket için ayrı bir sınıf, ilk Güncellemelerinden yeni bir dosya oluşturmak,UITableViewController
alt sınıf seçme ve sınıfıTableTestTableViewController
arama mantığı . girişimiTableTestViewController.m
yukarıdaki kod parçası kaldırmak veTableTestTableViewController.m
bizim bu üç yöntem varsayılan uygulama değiştirme içine yerleştirin.- Interface Builder içinde 50 **dosyası,
UITableViewController
ana İB açılan bir pencere sürükleyin ve otomatik olarak birlikte gelenUITableView
yeni nesne silmek aynı içinde TableTestTableViewController
53 *bu yeni sınıf için ayarlayın- Mevcut
dataSource
delegate
bağlarını çıkarmak, daha önce çalışanUITableView
yarattıkTableTestTableViewController
yeni aynı iki bağlantıları yeniden bağlayın. - Değişiklikleri kaydetmek, İnşa ve eğer aldığım sonuçlar alıyorsanız,
UITableView
fonksiyonları artık düzgün not
Çözüm:
Daha fazla sorun giderme ve iPhone Developer Forums bazı yardımı ile bir çözüm kaydettim! Proje UIViewController
ana sınıfı prizine UITableViewController
örneği göstererek ihtiyacı var. Bunu yapmak için, sadece birincil görünümü üstbilgi için aşağıdaki Ekle (TableTestViewController.h
):
#import "TableTestTableViewController.h"
ve
IBOutlet TableTestTableViewController *myTableViewController;
Sonra, Interface Builder, ana İB penceresinde TableTestTableViewController
Dosyanın Sahibi yeni prizine bağlayın. Hiçbir değişiklik XİB UI kısmında gereklidir. Hayır kullanıcı kodu direkt olarak kullanılıyor olsa da, sadece bu çıkış olması, tamamen sorunu giderir. Yardımcı olanlar ve kredi sayesinde çözüm bulmak için iPhone Geliştirici Forumlarında BaldEagle gider.
CEVAP
Adımları takip ettim, projeyi yeniden ve aynı sorunla karşılaştım. Temelde neredeyse bitti. 2 şey eksik (sabit bir kez çalışır) vardır:
Ekranda
UITableView
TableTestTableViewController
tableView
bağlamanız gerekir.IBOutlet
değil, çünkü daha önce de dediğim gibitableView
özelliği geçersiz kılar veIBOutlet
yapabilirsiniz:@interface TableTestTableViewController : UITableViewController { UITableView *tableView; } @property (nonatomic, retain) IBOutlet UITableView *tableView;
Sonraki şey
TableTestTableViewController
bir başvuru ekleyin veTableTestViewController
onu korumak için. Aksi takdirdeTableTestTableViewController
(asılı. hiçbir şey uç yüklemeden sonra) piyasaya sürülebilir ve bu hatalı sonuçlar, çöküyor ya da bir şey göstermek olduğunu görüyorsunuz. Eklerim:@interface TableTestViewController : UIViewController { TableTestTableViewController *tableViewController; } @property (nonatomic, retain) IBOutlet TableTestTableViewController *tableViewController;
ve
TableTestTableViewController
örnek Arayüz Oluşturucu bu bağlayın.
Yukarıdaki ile bu sorun benim makinede çalıştı.
Ayrıca tüm bunların arkasındaki motivasyon yerine UITableView
kendi UITableViewController
kullanarak) devlet için iyi olacağını düşünüyorum. Benim durumumda sadece 80 ** içerik aynı ekranından diğer görünümleri kullanma. UILabels
UIView
altında UIImages
diğer eklemek ve onları yukarıda onları altında veya UITableView
gösterebilirim.
Veri kaynağı tableView bir hücre dönme...
Bulundu' bash komut dosyası kayna...
İterek sorunu heroku uygulama...
Bootstrap radyo düğmeleri geçiş sorunu...
Nasıl düzgün curl kullanırken gzip ' b...