Присутствует контроллер модального представления от UIAction

Мое приложение работает со списком контактов в TableViewController. Оттуда вы можете нажать на строку, чтобы открыть сведения о контакте. Позже, на этой детали View Controller, вы можете нажать кнопку панели "Edit", чтобы модально представить третий View Controller для редактирования данных контакта. Я использую синхронизацию CoreData и iCloud, все работает нормально.

Теперь я реализую контекстные UIActions для строк табличного представления, например, для того, чтобы представить DIRECTLY edit View Controller для контакта в indexPath. я использую contextMenuConfigurationForRowAt способ сделать это:

override func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
    
    let object = fetchedResultsController?.object(at: indexPath)
    
    return UIContextMenuConfiguration(identifier: nil, previewProvider: nil) { suggestedActions in
        
        let editAction = UIAction(title: "Edit", image: UIImage(systemName: "square.and.pencil")) { action in
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let VC = storyboard.instantiateViewController(withIdentifier: "EditViewController") as! EditViewController
            VC.person = object
            self.present(VC, animated: true, completion: nil)
        }

EditViewController представлен модально, но ни его кнопки навигации (сохранить, отменить), ни его строка заголовка не представлены. Я могу вручную отключить контроллер, да, но без кнопок сохранения и отмены бесполезно.

Я намерен представить EditViewController ТОЧНО как оригинальный способ, с каждой опцией (возможно, даже БОЛЕЕ detailViewController, как обычно, хотя в этом нет необходимости), просто чтобы привести пользователя к тому же опыту, но с меньшим количеством шагов.

Я полагаю, что должен быть способ обойти эту проблему, что-то связанное с его корневым или навигационным контроллером (поскольку EditViewController фактически встроен в соответствующий ему контроллер навигации), но я не могу найти способ...

Благодаря!

0 ответов

Другие вопросы по тегам