介紹iOS的 - 得到一個奇怪的錯誤:無法識別的選擇發送到實例上一個UITableView
在我目前的應用程序,我有持有自定義單元格對象一個UITableView。自定義的UIViewCellObjects簡單地從標準的UITableViewCell類中繼承而來。自定義單元格保存關於正在運行的後臺上傳的信息,並使用百分比完成等方式更新它們。
自定義單元對象偵聽來自在後臺運行的上傳進程的NSNotifications,當它們獲得相關通知時,它們只需使用新信息(例如上載百分比)更新其自己的視圖控件。
現在當上載過程完成後,我重新整理主動上傳對象數組並重新加載這樣的實現代碼如下:
-(void) uploadFinished: (NSNotification*)notification
{
NSDictionary *userInfo = [notification userInfo];
NSNumber *uploadID = [userInfo valueForKey:@"uploadID"];
if (uploadID.integerValue == uploadActivity.uploadID)
{
[[ApplicationActivities getSharedActivities] markUploadAsFinished:uploadActivity];
[parentTable reloadData];
[self setUploadComplete];
}
}
現在這種方法發生在tableviewcell對象,你可以看到他們在數組排序後立即調用他們擁有的UITableView來重新加載數據。 markUploadAsFinished方法只是重新排列數組,所以任何新完成的上傳都放在頂部,所以它會以這種方式出現在UITableView中。
的問題
現在我遇到的問題是,當這個方法被調用時,我有時得到以下錯誤: 'NSInvalidArgumentException' 的,理由是:「 - [CALayer的的tableView: numberOfRowsInSection:]:無法識別的選擇器發送到實例
我不明白這一點,有時整個過程運行良好,完成上載出現在UItableview的開始,並在其他看似隨機的時間失敗。我真的不知道這裏發生了什麼。
UploadCell *cell = [activeUploadsTable dequeueReusableCellWithIdentifier:@"UploadProgressCell"];
if (cell == nil)
{
[[NSBundle mainBundle] loadNibNamed:@"UploadCellView" owner:self options:nil];
cell = customCell;
}
是否有任何人誰可能有一個關於什麼是怎麼回事線索:
定製細胞從筆尖文件中像這樣裝?
編輯
首先,我已經找到了這個錯誤在哪裏線出現右: reloadData
被稱爲自定義單元格的對象內。
此外,它似乎發送方法的實例可以更改。我也有這個錯誤:
'NSInvalidArgumentException', reason: '-[UIScrollViewPanGestureRecognizer tableView:numberOfRowsInSection:]: unrecognized selector sent to instance
我真的不知道這裏發生了什麼。
你在哪裏設置你的表視圖的'dataSource'?它在失敗時似乎被設置爲一個「CALayer」實例。 – 2012-02-18 00:52:49
tableview的數據源在名爲「ActiveUploads」的.nib文件中設置。這個.nib文件只包含一個包含UItableview本身的UIView。然後將UITableView數據源+委託設置爲.nib文件的文件所有者,文件所有者是一個UIViewController,它處理您在上面看到的創建。 – CodingBeagle 2012-02-18 00:55:35
您是否啓用了殭屍功能? – 2012-02-18 04:49:06