Soru basit: UITableViewCell
Xib dosyalarından özel yükleme nasıl yapılır? Bunu yapmak, hücrelerinizi tasarlamak için Interface Builder'ı kullanmanızı sağlar. Görünüşe göre cevap, bellek yönetimi sorunları nedeniyle basit değil. Bu iş parçacığı bu sorundan bahseder ve bir çözüm önerir, ancak NDA sürümünden önce gelir ve koddan yoksundur. İşte bu uzun iplik kesin bir cevap vermeden konuyu tartışmaktadır.
İşte kullandığım bazı kod:
static NSString *CellIdentifier = @"MyCellIdentifier";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Bu kodu kullanmak için, yeni bir alt sınıf olan MyCell.m / .h dosyasını oluşturun UITableViewCell
ve IBOutlets
istediğiniz bileşenlere ekleyin . Sonra yeni bir "Boş XIB" dosyası oluşturun. IB'de Xib dosyasını açın, bir UITableViewCell
nesne ekleyin , tanımlayıcısını "MyCellIdentifier" olarak ayarlayın ve sınıfını MyCell olarak ayarlayın ve bileşenlerinizi ekleyin. Son olarak, IBOutlets
bileşenlere bağlayın . IB'de Dosyanın Sahibini ayarlamadığımızı unutmayın.
Diğer yöntemler, Dosya Sahibinin ayarlanmasını savunur ve Xib ek bir fabrika sınıfı aracılığıyla yüklenmezse bellek sızıntıları konusunda uyarır. Yukarıdakileri Aletler / Sızıntılar altında test ettim ve bellek sızıntısı görmedim.
Peki Xib'lerden hücre yüklemenin kanonik yolu nedir? Dosyanın Sahibini ayarlıyor muyuz? Bir fabrikaya ihtiyacımız var mı? Eğer öyleyse, fabrikanın kodu neye benziyor? Birden fazla çözüm varsa, her birinin artılarını ve eksilerini açıklığa kavuşturalım ...