2014-01-26 52 views
0

男人,這是很煩人的,我必須繼續回顧我的舊xcode項目,以瞭解如何在我的cellForRowAtIndexPath委託方法中設置自定義單元格,這僅僅是因爲我看過的方法的規模。在cellForRowAtIndexPath方法中設置自定義單元格的正確方法?

什麼是在不使用故事板的情況下在cellForRowAtIndexPath方法中設置自定義單元格的正確代碼?

我目前在做這樣的事情:

//This works for me btw 
static NSString *simpleTableIdentifier = @"customcell"; 
CustomTableViewCell *customCell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
if (customCell == nil) 
{ 
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell" owner:self options:nil]; 
    customCell = [nib objectAtIndex:0]; 
} 

然後我看到使用loadWithNibName和其他人正在使用registerWithNib方法註冊他們的筆尖在viewDidLoad方法等人。

在委託方法中設置自定義單元格的正確方法是什麼?

我最近也被告知,當我處理自定義單元格時,我不需要調用dequeueReusable..方法。有人可以澄清正確的方式來爲我設置你的cellForRowAtIndexPath代表方法。沒有使用故事板。我已正確設置了我的自定義單元格視圖及其各自的.m.h文件。

回答

1

如果它是CustomTableViewCell nib文件存在於相同的UITableViewController nib中,您的代碼將正常工作。否則,您需要在cellForRowAtIndexPath中加載nib文件:

if(cell==nil){ 
NSArray * nibContents = [[NSBundle mainBundle] loadNibNamed:"CustomTableViewCell" owner:self options:NULL]; 

NSEnumerator * nibEnumerator = [nibContents objectEnumerator]; 
NSObject * nibItem = nil; 

while ((nibItem = [nibEnumerator nextObject]) != nil) { 

    if ([nibItem isKindOfClass:[UITableViewCell class]]) { 
     cell=(CustomTableViewCell*)nibItem; 
    } 

} 

} 
+0

是的,這感覺hackish。 – Pavan

相關問題