iOS 9 的 可以通过下面的代码拿到,self 是 UITableViewCell,但是9以下就不行了,而且这么拿 也不靠谱,有大神知道有什么更好的办法能过拿到这个按钮对象吗?
for (UIView *subView in self.subviews) {
if ([NSStringFromClass([subView class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
UIView *view = ((UIView *)[subView.subviews firstObject]);
}
}
하위 뷰를 순회한다고 해서 반드시 원하는 뷰를 얻을 수 있는 것은 아닙니다. 때로는 표시되는 것이 뷰가 아닐 수도 있고, 레이어일 수도 있고, 뷰에 그려진 작은 영역일 수도 있기 때문입니다.
이 보기를 얻으려면 텍스트나 스타일을 맞춤설정하고 일부 터치 이벤트를 추가하면 됩니다.
텍스트와 배경색을 수정하고 클릭수를 추가하는 것은 쉽습니다. 이 보기를 세부적으로 맞춤설정하려면 직접 구현하는 것이 더 나을 수 있습니다.
이것을 얻은 후에 무엇을 하고 싶은지 말해 보는 게 어때요? 어쩌면 우리는 생각을 바꿀 수도 있습니다.
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]을 반환합니다. }tableView
의대리인
을 구현하려면 "편집" 및 "삭제" 버튼을 사용자 정의하세요.버튼의 텍스트를 수정하려는 경우 다음 API를 호출할 수 있습니다.