搜尋

首頁  >  問答  >  主體

objective-c - 自訂cell上的button監聽的問題,用indexPathForSelectedRow取值問題

我用xib 自訂cell 前面有個button,寫cell 中監聽button,點擊後發送通知到tableView 修改數據,在通知方法中用indexPathForSelectRow.row 拿到當前模型數據,但indexPathForSelectRow.row 返回數值一直為0。

#pragma mark - 接受通知的方法
- (void)deleteBtnClick:(NSNotification *)note
{
    NSLog(@"%ld" ,self.searchResult.indexPathForSelectedRow.row);
}
習慣沉默習慣沉默2758 天前748

全部回覆(2)我來回復

  • 黄舟

    黄舟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
        }];
    }
    
    

    回覆
    0
  • 怪我咯

    怪我咯2017-05-02 09:23:53

    @未解

    需要實現點擊右邊那個刪除按鈕刪除歷史記錄上對應cell的資料,所以要拿到cell的row,原來打算綁定刪除按鈕的tab,但打印tag一直為0(不知道是不是因為cell是用xib自訂),
    最後我自訂一個UIbutton,帶num屬性,在cellForRowAtIndexPath傳indexpath.row值到刪除按鈕的num屬性,在監聽按鈕點擊然後發送含有num的值得通知到剛才的tableviewcontroller,再刪除模型數據中對應的值.
    這樣可以解決問題,但這樣傳來傳去,好像不好,有沒有更好的辦法呢??

    回覆
    0
  • 取消回覆