我用xib 自訂cell 前面有個button,寫cell 中監聽button,點擊後發送通知到tableView 修改數據,在通知方法中用indexPathForSelectRow.row
拿到當前模型數據,但indexPathForSelectRow.row
返回數值一直為0。
#pragma mark - 接受通知的方法
- (void)deleteBtnClick:(NSNotification *)note
{
NSLog(@"%ld" ,self.searchResult.indexPathForSelectedRow.row);
}
黄舟2017-05-02 09:23:53
這裡你期望它是多少呢?是你點擊 button 的那個 cell 嗎? 你在這裡取的是目前選取行,點選了那個 cell 裡的一個 button,未必就選取了那個 cell。你可以試試看在通知的 userInfo 裡帶著被點那一行的 row。或者其實不用搞這麼麻煩的,用 block 來處理這樣的事情會比較容易。
@interface CustomCell: UITableViewCell
@property (nonatomic, copy) void (^onDeleteBtn)();
@end
@implempation CustomCell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellIdentifier"];
[cell setOnDeleteBtn:^{
// 这里执行删除 indexPath 数据源的操作,然后 reloadData
}];
}
怪我咯2017-05-02 09:23:53
@未解
需要實現點擊右邊那個刪除按鈕刪除歷史記錄上對應cell的資料,所以要拿到cell的row,原來打算綁定刪除按鈕的tab,但打印tag一直為0(不知道是不是因為cell是用xib自訂),
最後我自訂一個UIbutton,帶num屬性,在cellForRowAtIndexPath傳indexpath.row值到刪除按鈕的num屬性,在監聽按鈕點擊然後發送含有num的值得通知到剛才的tableviewcontroller,再刪除模型數據中對應的值.
這樣可以解決問題,但這樣傳來傳去,好像不好,有沒有更好的辦法呢??