2013-07-17 38 views
1

我在一個新的應用程序中使用故事板,並在我的大多數viewcontrollers中都有一個tableview,它們幾乎完全相同。與一個原型單元格,一個獨特的cellidentifier,所有的UI方面幾乎相同。委託和數據源都正確連接。該應用程序在iOS6和最新的iOS7 beta上完美運行,問題是視圖控制器中有2個在iOS5下崩潰。UITableView訪問崩潰dequeueReusableCellWithIdentifier與故事板(iOS5)

當調用dequeueReusableCellWithIdentifier時,崩潰(錯誤訪問)出現在以下委託方法中。

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

    // Configure the cell... 

    // Rest of code snipped ... 

} 

錯誤消息的改變,從一無所有,到以下任一:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UITableViewReorderingSupport removeFromSuperview]: unrecognized selector sent to instance 0x2a3e20' 

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CALayer removeFromSuperview]: unrecognized selector sent to instance 0x2b9f90' 

也有涉及NSInvocation removeFromSuperview第三錯誤,但我不再得到這個一。

我在故事板中看不到任何明顯的問題。正如我之前所說的,它們都配置爲幾乎完全相同,所以對於僅在特定視圖控制器上發生此崩潰沒有任何意義。我沒有選擇自動佈局,所以這不是問題。

如果我用舊式的方式(前故事板)創建單元格,它可以正常工作。但我不希望有這樣做的,我不應該因爲違背了使用故事板的點...

if (cell==nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier]; 
    cell.textLabel.textColor = [UIColor colorWithRed:(100/255.0f) green:(150/255.0f) blue:(50/255.0f) alpha:1.0]; 
    cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:17.0]; 
    cell.detailTextLabel.textColor = [UIColor colorWithRed:(85/255.0f) green:(85/255.0f) blue:(85/255.0f) alpha:1.0]; 
    cell.detailTextLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:15.0]; 
} 

以上工作正常,如果我之前註釋掉dequeueReusableCellWithIdentifier線。

所以看起來問題必須在故事板內,但我看不出它有什麼問題,當我將它與可正常工作的視圖控制器進行比較時。

UPDATE:

張貼這個問題,我刪除了有問題的viewcontrollers之一,並從頭開始再次添加它之後。在這樣做的時候,我找到了問題的根源 - 將視圖連接到selectedBackgroundView的單元格。這個確切的視圖正在我的應用程序的其他表中使用,但在這個特定的一個它導致崩潰如上,我絕對不知道爲什麼。我沒有任何修改它的代碼。它只是在筆尖連接,這就是它...

我可以通過在代碼中創建selectedBackgroundView來解決此問題,但我仍然不明白這有什麼不同。

回答

2

你說你已經在別處使用過了。如果您有其他單元的圖形用戶界面元素被複制,則可能忘記刪除已複製的出口連接器。通過逐個選擇元素進行檢查,並檢查Connections Inspector中顯示的內容。

+0

這正是我發生的事情。當我將tableview中的原型單元格的數量增加到3時,它已經在那裏創建了其中一個的副本。如你所說,缺少一個出路。謝謝! – LukeP