Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
haiatov
0 / 0 / 0
Регистрация: 28.12.2015
Сообщений: 9
#1

Два segue, Два viewController, Одно отображение - Программирование iOS

21.01.2016, 20:59. Просмотров 459. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Два segue, Два viewController, Одно отображение (Программирование iOS):

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

Segue - Программирование iOS
Здравствуйте! Возникла проблема Есть TableViewController , при выборе ячейки переходим по segue на другой ViewController, на этом...

Переход по segue - Программирование iOS
Имеется 3 ViewController соединенные последовательно. Нужно, чтобы при одном условии осуществлялся переход из первого 1 ко 2...

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

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

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

6
cin_cout
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119
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
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119
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
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119
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
Привет! Вот еще темы с ответами:

Модальный ViewController - Программирование iOS
Здравствуйте! На выходных начал щупать разработку под iOS, до этого макось даже не видел. Вокруг столько всего непонятного, аж глаза...

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

как связать ViewController со Storyboard - Программирование iOS
Помогите пожалуйста связать ViewController с Storyboard. Создала iOS Empty Project. Подключила следующие frameworks: ...

Запуск нового ViewController из кода - Swift
Помогите решить проблему! Есть два контролера Splash и Main (Заставка и основное меню). Собственно задача из Splash запустить Main....


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

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

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