2014-01-27 74 views
1

在我的應用程序中,當用戶點擊一個特定的按鈕時,我需要擴大tableviewcell(這就像一個切換,點擊會擴大行和錄製其他時間將崩潰該行)在該單元格中。所以我已經實現了自定義委託方法,以知道哪個單元需要重新加載並用'reloadRowsAtIndexPaths'重新加載該特定單元。與'無法加載NIB的捆綁包',同時reloadRowsAtIndexPaths

第一次點擊按鈕,甚至是第二次,它的工作正常,但它第三次崩潰說'無法加載包中的NIB:'NSBundle </Users/path/myApp.app> (loaded)'名稱'ContactCell''

我的問題是重新加載的第一次和第二次爲什麼第三次崩潰的細胞?

我的代碼:

[contactTableView beginUpdates]; // Inside the custom delegate method 
[contactTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexpath] withRowAnimation:UITableViewRowAnimationNone]; // indexpath is which i get from cell through custom delegate method 
[contactTableView endUpdates]; 

ContactTableCell *cell; //Inside the cellForRowAtIndexPath 
    static NSString *CellIdentifier = @"ContactCell"; 

    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 

     // load a new cell from the nib file 
     [[NSBundle mainBundle] loadNibNamed:@"ContactCell" owner:self options:nil]; 
     cell = self.contactCell; 
     cell.delegate = self; 
     cell.indexPath = indexPath; 
     self.contactCell = nil; 
    } 

爲什麼崩潰?

+0

什麼是你該單元筆尖? ContactCell或ContactTableCell? – Mani

+0

@Mani ContactCell.xib。它只在有時而不是所有的時候崩潰。所以,筆尖名字不是我想的問題。 –

+0

你的tableview寬度保持不變?爲什麼不能增加table view的寬度? – footyapps27

回答

0

viewDidLoad註冊一次你的筆尖。

NSString *[email protected]"cellIdentifier"; 

UINib *nib=[UINib nibWithNibName:cellIdentifier bundle:[NSBundle mainBundle]]; 

[self.yourTableView registerNib:nib forCellReuseIdentifier: cellIdentifier]; 

希望這將工作

+0

嗨,我試着用你的上面的代碼在viewDidLoad中,但它會拋出一個錯誤,終止應用程序由於未捕獲的異常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:這個類不是關鍵值編碼兼容的關鍵contactCell。' ** –

+0

使用IB屬性檢查器來設置單元格標識符(標識符與添加在registerNib方法中相同) – Madhuri

1

好有一對夫婦的這一問題。首先,從筆尖加載不應該在這個類應該是在ContactTableCell類的init方法(initWithNib,或者你想叫什麼)

你XIB需要確保ContactTableCell是分配的自定義類也是如此。

所以用筆尖你的init會去像這樣

//in ContactTableCell.m 
-(id)initWithNib{ 
     self = [[[NSBundle mainBundle] loadNibNamed:@"ContactCell" owner:self options:nil] firstObject]; 
     if(self){ 
     //do extra customisation stuff/ set labels etc. 
     } 
     return self; 
} 

然後你會打電話

if (cell == nil) { 
    // load a new cell from the nib file 
    cell = [[ContactTableCell alloc] initWithNib]; 
    cell.delegate = self; 
    cell.indexPath = indexPath; 
} 
+0

嗨,我試過這個,我得到這個錯誤**終止應用程序由於未捕獲的異常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:這個類不是關鍵的值contactCell。 ** –

+0

contactCell在哪裏定義/初始化,它的類型是什麼。你能編輯你的文章,包括關於contactCell的代碼嗎? –

相關問題