2016-12-11 8 views
1

Я действительно не знаю, как назвать эту функцию, музыкальное приложение имело ее до 8,4, это похоже на скриншот. Я хочу реализовать его в своем приложении, поэтому, когда пользователь нажимает на ячейку, появляется «пузырь» с 2 кнопками выбора. Мне интересно, как это произошло в Obj-C, но я уверен, что люди оценят ответ, написанный в Swift. Благодаря ScreenshotiOS - Как добавить пузырь с текстом/кнопками по ячейке в UITableView?

+1

Thats called Menu. Посмотрите: https://developer.apple.com/reference/uikit/uimenucontroller –

ответ

1

Я делаю точно то же самое, что вы хотите. Для этого вам необходимо создать свой собственный контроллер просмотра, а не UIMenuItem. Захват экрана выглядит следующим образом.

enter image description here

Что я делаю, чтобы создать ViewController как всплывающие окна (PopoverMenuController), и добавление Tableview как подвид в меню. Таким же образом вы можете добавить любые элементы управления пользовательского интерфейса, которые вы хотите вместо tableView.

Вот как вы используете мой PopoverMenuController.

var myPopupMenu: PopoverMenuController! 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    // make cell fully visible 
    let tableCell = tableView.cellForRow(at: indexPath)! 
    tableView.scrollRectToVisible(tableView.rectForRow(at: indexPath), animated: false) 
    // pop up menu 
    myPopupMenu = PopoverMenuController() 
    myPopupMenu.sourceView = tableCell 
    var rect = tableCell.bounds 
    // I'm adjusting popup menu position slightly (this is optional) 
    rect.origin.y = rect.size.height/3.0 
    rect.size.height = rect.size.height/2.0 
    myPopupMenu.sourceRect = rect 
    myPopupMenu.addAction(PopMenuAction(textLabel: "MyMenu-1", accessoryType: .none, handler: myMenuHandler1)) 
    myPopupMenu.addAction(PopMenuAction(textLabel: "MyMenu-2", accessoryType: .none, handler: myMenuHandler2)) 
    present(myPopupMenu, animated: true, completion: nil) 
} 

func myMenuHandler1(_ action: PopMenuAction?) -> Bool { 
    // do some work... 
    return false 
} 

func myMenuHandler2(_ action: PopMenuAction?) -> Bool { 
    // do some work... 
    return false 
} 

To transltae to Obj-C не должно быть большим усилием. Я установил код comce PopoverMenuController.swift here. Этот контроллер является автономным и содержит описание того, как его использовать.

Надеюсь, это поможет.