찾다

 >  Q&A  >  본문

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]);
            
        }
    }
    

巴扎黑巴扎黑2785일 전748

모든 응답(2)나는 대답할 것이다

  • 怪我咯

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

    하위 뷰를 순회한다고 해서 반드시 원하는 뷰를 얻을 수 있는 것은 아닙니다. 때로는 표시되는 것이 뷰가 아닐 수도 있고, 레이어일 수도 있고, 뷰에 그려진 작은 영역일 수도 있기 때문입니다.

    이 보기를 얻으려면 텍스트나 스타일을 맞춤설정하고 일부 터치 이벤트를 추가하면 됩니다.

    텍스트와 배경색을 수정하고 클릭수를 추가하는 것은 쉽습니다. 이 보기를 세부적으로 맞춤설정하려면 직접 구현하는 것이 더 나을 수 있습니다.

    이것을 얻은 후에 무엇을 하고 싶은지 말해 보는 게 어때요? 어쩌면 우리는 생각을 바꿀 수도 있습니다.

    tableView대리인을 구현하려면 "편집" 및 "삭제" 버튼을 사용자 정의하세요.

    <프리><코드> func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> // 편집하다 let editAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "편집") { [소유되지 않은 자기](_, _) -> vc = self.pushViewController("TUAddSessionViewController")를 TUAddSessionViewController {로 두면? vc.session = TUCache.shared.sessionItems[indexPath.row] vc.editMode = true } } //버튼 배경색 설정 editAction.BackgroundColor = self.navigationController?.navigationBar.tintColor // 삭제 let delAction = UITableViewRowAction(style: UITableViewRowActionStyle.Destructive, title: "삭제") { (_, _) -> 무효 TUCache.shared.sessionItems.removeAtIndex(indexPath.row) tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Fade) } [delAction, editAction]을 반환합니다. }

    회신하다
    0
  • 黄舟

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

    버튼의 텍스트를 수정하려는 경우 다음 API를 호출할 수 있습니다.

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

    여러 개의 복귀 버튼을 맞춤설정할 수 있으며, 빨간색 버튼과 여러 개의 회색 버튼을 설정할 수 있습니다.

    다음 링크를 참고할 수 있습니다:
    http://www.cnblogs.com/scaptain/p/3950123.html
    http://blog.csdn.net/lcl130/article/details/ 42131821

    회신하다
    0
  • 취소회신하다