我在一個新的應用程序中使用故事板,並在我的大多數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來解決此問題,但我仍然不明白這有什麼不同。
這正是我發生的事情。當我將tableview中的原型單元格的數量增加到3時,它已經在那裏創建了其中一個的副本。如你所說,缺少一個出路。謝謝! – LukeP