2016-07-11 5 views
0

плохо попробуйте объяснить это как можно лучше. У меня есть UIViewController. внутри него есть кнопка «ПРОПУСК», а также UIContainerView. встроенный в этот вид контейнера является UIPageViewController. Контроллер просмотра страницы имеет 4 страницы.вызовите метод родительского представления из представления, встроенного в UIContainerView. swift

Я хочу, чтобы кнопка «ПРОПУСК» (в родительском UIViewController) имела разный цвет для каждой страницы в PageViewController. Пример: если страница == 1, SKIP.color = белый. if page == 2, SKIP.color = blue ...

Я не понимаю, как правильно вызвать метод внутри родителя из дочернего PageViewController.

любая помощь будет оценена

+0

Отъезд делегатов в iOS/NSNotificationCentre – 7vikram7

ответ

0

Вы можете использовать шаблон делегирования или NSNotification.

Делегация

Установите parentVC в качестве делегата pageVC и помнить, что parentVC должен соответствовать протоколу делегата странице Вид контроллера

class ParentClass: UIViewController, UIPageViewControllerDelegate { 
    // ... 
    pageInstanceVC.delegate = self 
} 

, а затем реализовать его метод делегата (это когда вы меняете кнопки он цвет), вы можете реализовать его в - pageViewController:willTransitionToViewControllers: или - pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted: Полных документов можно найти here

Notifi Катион

Набор parentVC слушать уведомления об изменении страницы и осуществлять необходимый метод при получении уведомления

// Parent VC 
override func viewDidLoad() { 
    super.viewDidLoad() 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeButtonColor", name: "kPageChangeNotif", object: nil) 
} 

func changeButtonColor(notification: NSNotification) { 
    let userInfo = notification.userInfo as Dictionary 
    let pageNumber = userInfo["PageNumber"] 

    // Change the button color 
    // ..... 
} 

Затем разослал уведомление, когда страница изменяется

// PageVC 
NSNotificationCenter.defaultCenter().postNotificationName("kPageChangeNotif", object: nil, userInfo: ["PageNumber" : 2]) 

Не забудьте удалить parentVC из наблюдая за NSNotificationCenter's (removeObserver), когда это необходимо

0

Вы можете использовать Post Notification для достижения этой цели,

и вы будете запускать его, когда пользователь изменяет страницу.

Смежные вопросы

 Смежные вопросы