2016-02-25 2 views
1

Я загрузил форму исходного кода приложения Google Github. Приложение имеет CalendarViewController, который содержит дочерний UIView (называемый calendarView).Использование копии ViewController в том же приложении с дополнительными функциями

Это имеет несколько классов (CalendarDayView, CalendarMonthView и т.д. и т.п. и протоколы также написано для некоторых классов)

Я интегрировал этот календарь приложение в мое пользовательском iPhone приложение, которое имеет TableViewController. Остальная часть информации указана на изображении.

Примечания:

  1. язык программирования = Swift.
  2. Я полный новичок, поэтому, пожалуйста, старайтесь быть изобретательным.
  3. Я не знаю, будет ли данная информация достаточной для получения идеального ответа (поскольку я понимаю, что ответ на этот вопрос зависит от того, как запрограммирован CalendarApp).
  4. Для получения информации см. Прикрепленный файл.

Заранее спасибо. The description of the problem

+1

Экземпляр 'UIViewController' может появляться только один раз в стеке навигации. Вы можете создать экземпляр второго экземпляра того же класса и предоставить дополнительную конфигурацию, чтобы он вел себя по-другому. Это полностью зависит от фактического подкласса UIViewController. – SmokeDispenser

ответ

1

Это совершенно нормально. Просто убедитесь, что у вас есть два экземпляра CalendarViewController.

Например, при создании экземпляра навигационного контроллера у вас есть:

let calendar1 = CalendarViewController() 
let navC = UINavigationController(rootViewController:calendar1) 

А потом, когда кнопка нажата в вашем TableViewController:

let calendar2 = CalendarViewController() 
self.navigationController.pushViewController(calendar2,animated:true) 

Потому что вы делаете два инициализацыми, каждый CalendarViewController будет полностью отдельным объектом и установка некоторых переменных на одном из них не приведет к обновлению этой переменной во втором.

+0

спасибо за ответ. И я прошу прощения за поздний ответ, но я не мог проверить раньше. После применения вашего метода, Код компилируется, но после запуска приложения и я нажимаю на строку таблицыView (из которой я хочу получить доступ к календарю2). Я получаю сообщение об ошибке: «Неожиданно найдено нуль при обертке необязательного значения "и указывает на место в классе CalendarViewController() на следующий оператор: calendarView.layer.borderWidth = 1 // Где calendarView - это еще один класс. –

+1

Это означает, что ваш calendarCiew является IBOutlet. В этом случае вам нужно использовать initWithNibName, чтобы загрузить xib вашего CalendarViewController. –

+0

Продолжение из предыдущего комментария: ..... Есть некоторые другие свойства calendarView, которые также инициируются как calendarView.layer.borderWidth. когда я ставлю? mark после calendarView в коде, например calendarView? .layer.borderwidth = 1 (и во всех других выражениях аналогичного вида ошибка исчезает, но я получаю черный экран, когда я нажимаю на строку таблицыView (чтобы загрузить новый экземпляр из CalendarViewController()). –