搜尋

首頁  >  問答  >  主體

ios - 怎么拿到 UITableView 滑动删除的那个红色的删除按钮对象?

iOS 9 的 可以通过下面的代码拿到,self 是 UITableViewCell,但是9以下就不行了,而且这么拿 也不靠谱,有大神知道有什么更好的办法能过拿到这个按钮对象吗?

for (UIView *subView in self.subviews) {
        if ([NSStringFromClass([subView class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
            
            UIView *view = ((UIView *)[subView.subviews firstObject]);
            
        }
    }
    

巴扎黑巴扎黑2821 天前785

全部回覆(2)我來回復

  • 怪我咯

    怪我咯2017-04-17 16:41:12

    遍歷subviews不一定能拿到你想要的view的,因為有時候,你看到的東西,它不一定是一個view,也許是一個layer,也許只是view裡面draw出來的一小塊區域。

    你想拿到這個view,能想到的就只有定制它的文字或者樣式,再者就是添加一些觸摸事件了。

    修改文字和背景色還有添加點擊都很容易做到,如果想深度定制這個view,也許自己實現一個可能會更好。

    不如說說拿到這個是想做什麼操作呢?說不定可以換個思路。

    自訂「編輯」「刪除」按鈕實作tableView的一个delegate:

    
        func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
            // 编辑
            let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "编辑") {
                [unowned self](_, _) -> Void in
                if let vc = self.pushViewController("TUAddSessionViewController") as? TUAddSessionViewController {
                    vc.session = TUCache.shared.sessionItems[indexPath.row]
                    vc.editMode = true
                }
            }
            // 设置按钮背景色
            editAction.backgroundColor = self.navigationController?.navigationBar.tintColor
              
            // 删除
            let delAction = UITableViewRowAction(style: UITableViewRowActionStyle.Destructive, title: "删除") {
                (_, _) -> Void in
                TUCache.shared.sessionItems.removeAtIndex(indexPath.row)
                tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade)
            }
            return [delAction, editAction]
        }

    回覆
    0
  • 黄舟

    黄舟2017-04-17 16:41:12

    你應該是想修改按鈕上面的文字吧,那你可以呼叫下面的API:

    func tableView(tableView: UITableView!, editActionsForRowAtIndexPath indexPath: NSIndexPath!) -> [AnyObject]!

    它可以讓你自訂返回多個按鈕,可以設定一個紅色的按鈕和多個灰色的按鈕。

    下面這些連結可以參考:
    http://www.cnblogs.com/scaptain/p/3950123.html
    http://blog.csdn.net/lcl130/article/details/42131821

    回覆
    0
  • 取消回覆