2014-10-02 2 views
6

Я выполнил некоторые действия по редактированию для строк таблицы с использованием UITableViewRowAction. Один из них - это действие удаления, и я хочу представить popover, содержащий лист действий, чтобы подтвердить действие удаления. Таким образом, мне нужна ссылка на представление кнопки удаления, чтобы передать его на UIPopoverPresentationController.Как получить доступ к представлению UITableViewRowAction iOS 8

Есть какой-либо способ доступа к виду объекта UITableViewRowAction?

Чтобы уточнить немного больше, вид им пытаются получить доступ, имеет красную кнопку удаления, отмеченные зеленым цветом:

+0

Swift или Objective C? – derdida

+0

@derdida Предпочитает Objective C, но может понимать как – GuillermoMP

+0

Индексная ячейка ячейки, которую вы проверили, передается обработчику. Разве это не все, что вам нужно? – rdelmar

ответ

1

К сожалению, я не знаю версию Objective-C этого, но Я использую это в моем проекте прямо сейчас в Свифте, и он должен работать. Это только iOS 8, хотя я не уверен, что есть способ сделать это до этого.

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

    var deleteButton: UITableViewRowAction = UITableViewRowAction(style: .Default, title: "  ", handler: { (action, indexPath) in 

      // put whatever you need to call here. below is the default code, which will delete the cell as usual. 
      self.tableView.dataSource?.tableView?(
       self.tableView, 
       commitEditingStyle: .Delete, 
       forRowAtIndexPath: indexPath 

      ) 

      return 
     }) 
    } 
    return [deleteButton] 
} 

Другой вариант заключается в использовании функции Tableview:

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) 

Где можно создать всплывающее окно, и пусть они подтверждают это. Это, вероятно, будет работать лучше, я считаю, что это именно то, для чего предназначена функция.

Редактировать: забыл возврат [deleteButton] в этом первом бите кода.

-1

UIView * view = sender.superview; // Cell contentView

CustomCell *cell; // (you can custom tableviewcell name if created) 
if(SYSTEM_VERSION_GREATER_THAN(@"8.0")) 
{ 
    cell = (CustomCell *)view.superview; 
} 
else{ 
    cell = (CustomCell *)[[[sender superview] superview]superview]; 

} 

And Access it by :- 
cell.view 
Смежные вопросы