Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
haiatov
0 / 0 / 0
Регистрация: 28.12.2015
Сообщений: 9
1

Два segue, Два viewController, Одно отображение

21.01.2016, 20:59. Просмотров 610. Ответов 6
Метки нет (Все метки)

Добрый день! Изучаю работу c segue - и столкнулся с проблемой.

Какая стоит передо мной задача. Есть два класса (viewController), один наследуется от другого.
Отображение для них общее.

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

Если делать без storyboard - то все просто. Я создаю нужный мне viewController (initWithXibName) указывая свое отображение.

Здесь же я создал 2 segue - оба получается от соответствующих кнопок. Обе ведут на второе отображение. Но ведь в IB класс указан в настройках.

Я использую функцию prepareForSegue, но не пойму как изменить класс для этого отображения.

Это возможно? Хотелось бы использовать одно отображение, чтобы не плодить второе отображение (потому что просто два режима, просмотр записи, и добавление записи) - но хотелось бы два контроллера.

Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2016, 20:59
Ответы с готовыми решениями:

два viewController-a
помогите изучить один нюанс на котором стопорнулся. Кто-нибудь на примере...

Segue
Здравствуйте! Возникла проблема Есть TableViewController , при выборе ячейки...

Переход по segue
Имеется 3 ViewController соединенные последовательно. Нужно, чтобы при одном...

Ручной переход segue
Есть tableviewcontroller при свайпе на ячейку появляется delete и рядом edit. ...

CollectionView & Segue
Помогите плиз, голову уже сломал, весь нет перерыл - не могу понять что да как....

6
cin_cout
27 / 27 / 7
Регистрация: 06.10.2012
Сообщений: 130
22.01.2016, 16:09 2
Если у вас 1 View, зачем 2 View Controller'a ? С 1 вьюхой отлично справится 1 VC, просто пропишите функционал, обусловленный какими-то actions/events - по нажатию кнопок Done / Cancel и тд
Например, есть 2 сегвея PresentModally к View, которым управляет ItemDetailViewController.
В TableViewController (делегат), откуда открывается ItemDetailViewController, прописываю:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "Добавить" {
            let navigationController = segue.destinationViewController as! UINavigationController
            let controller = navigationController.topViewController as! ItemDetailViewController
            controller.delegate = self
        } else if segue.identifier == "Редактировать" {
            let navigationController = segue.destinationViewController as! UINavigationController
            let controller = navigationController.topViewController as! ItemDetailViewController
            controller.delegate = self
            if let indexPath = tableView.indexPathForCell(sender as! UITableViewCell) {
                controller.itemToEdit = somelist.items[indexPath.row]
            }
        }
    }
Дальше нужен протокол для экрана добавления/редактирования.
Типа такого:

Objective-C
1
2
3
4
5
6
7
8
9
10
11
protocol ItemDetailViewControllerDelegate: class {
    func itemDetailViewControllerDidCancel(controller: ItemDetailViewController)
    func itemDetailViewController(controller: ItemDetailViewController, didFinishAddingItem item: ваш добавляемый объект)
    func itemDetailViewController(controller: ItemDetailViewController, didFinishEditingItem item: ваш редактируемый объект)
}
 
class ... {
 
weak var delegate: ItemDetailViewControllerDelegate?
 
}
И реализация методов протокола в делегате.
С самого начала VC-делегат вписан в NavigationController (в режиме Storyboard: Editor -> Embed in -> NavigationController)
0
haiatov
0 / 0 / 0
Регистрация: 28.12.2015
Сообщений: 9
29.01.2016, 09:34  [ТС] 3
Спасибо, за подробный ответ!

Это понятно, что в моем случае можно и так реализовать, через 1 контроллер. Теоретически, как можно реализовать, то, что я написал. Нельзя?
0
cin_cout
27 / 27 / 7
Регистрация: 06.10.2012
Сообщений: 130
29.01.2016, 14:47 4
У меня вопрос:
один VC наследуется от другого - какая задача у такой архитектуры? Условный VC уже наследует UIViewController'у, зачем еще один child?
0
haiatov
0 / 0 / 0
Регистрация: 28.12.2015
Сообщений: 9
29.01.2016, 15:25  [ТС] 5
прошу прощения, не совсем понял вопроса) Можно ведь сказать, объект уже наследуется от NSObject зачем еще наследование делать)

У меня есть поведение которое описано в одном UV. другими я хотел его просто расширить. Не хотелось все в один вставлять и разными if-ами разделять
0
cin_cout
27 / 27 / 7
Регистрация: 06.10.2012
Сообщений: 130
30.01.2016, 08:46 6
Цитата Сообщение от haiatov Посмотреть сообщение
объект уже наследуется от NSObject
ранее было:
Цитата Сообщение от haiatov Посмотреть сообщение
Есть два класса (viewController), один наследуется от другого.
в первом случае мы говорим о модели данных
во втором - о контроллере

где правда?
0
haiatov
0 / 0 / 0
Регистрация: 28.12.2015
Сообщений: 9
30.01.2016, 12:49  [ТС] 7
я утрировал) просто не понял Ваш вопрос, о том, зачем нужен еще один уровень наследования.

На самом деле, я изучаю(вспоминаю) objective-c пользуясь книгами (одна из них Head First) - ну так вот там был еще ios5. Я пытаюсь реализовать примеры из книги, но исползуя новые возможности, в данном случае SEGUE.

В книге используется простой прием. initWithXibName. Который позволяет загрузить любой VC с любым отображением. Здесь же так не получается - поэтому у меня появился этот вопрос)

Понятно, что есть другие пути решения, но хочется именно вникнуть, как все работает - и сделать так же как в книге, но другими методами
0
30.01.2016, 12:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2016, 12:49

Передача из TableViewCell с searchbar через Segue
Данные сортируются нормально, однако при клике на них, ничего не происходит,...

xcode ViewController
Подскажите, пожалуйста, как из View выполнить ViewController -(void)googleStart...

Изменить ViewController
Пользуюсь stroboard для создания интерфейса. Скажем, есть ViewController1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru