2016-07-11 12 views
0

病気私ができるようにこれを説明しようとする。 私はUIViewControllerを持っています。その中には 'スキップ'ボタンがあり、UIContainerViewもあります。そのコンテナビューに埋め込まれているのはUIPageViewControllerです。ページビューコントローラには4ページあります。UIContainerViewに埋め込まれたビューから親ビューのメソッドを呼び出します。迅速に

親ビューのUIViewController内の 'SKIP'ボタンにPageViewControllerの各ページの色を変えたいと思っています。 例:page == 1の場合、SKIP.color = whiteです。ページ== 2の場合、SKIP.color = blue ...

子のPageViewControllerから親の内部でメソッドを呼び出す正しい方法を理解していません。

任意のヘルプはあなたが、これを達成するためにポストの通知を使用

、ユーザーがページを変更したとき、あなたがそれをトリガすることができます

+0

iOS/NSNotificationCentreで代理人をチェックしてください – 7vikram7

答えて

0

委任パターンまたはNSNotificationを使用できます。

委任

pageVCのデリゲートとしてparentVCを設定し、parentVCが(ページビューコントローラのデリゲートプロトコル

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

に準拠し、そのデリゲートメソッドを実装する必要がありますが、ボタンのを変更ところ、これがあることを覚えておいてください色)、あなたは完全なドキュメントがhere

お知らせ機能を見つけることができます - pageViewController:willTransitionToViewControllers:または- pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:でそれを実装する場合がありますカチオン

設定parentVCページの変更通知を聞くと通知がページが変更されたときに

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

から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 
    // ..... 
} 

を受信したときに、必要なメソッドを実装します必要に応じてNSNotificationCenter(removeObserver)を確認してください

0

をいただければ幸いです。

関連する問題