我希望能够使'SKIP'按钮(在父UIViewController中)为PageViewController中的每个页面设置不同的颜色。 示例:if page == 1,SKIP.color = white。 if page == 2,SKIP.color = blue ...
我不明白从子PageViewController调用父内部方法的正确方法。
任何帮助将不胜感激
答案 0 :(得分:1)
您可以使用委托模式或NSNotification。
将parentVC设置为pageVC的委托,并记住parentVC必须符合页面视图控制器的委托协议
class ParentClass: UIViewController, UIPageViewControllerDelegate {
// ...
pageInstanceVC.delegate = self
}
然后实现其委托方法(这是您更改按钮颜色的位置),您可能希望在
可以找到- pageViewController:willTransitionToViewControllers:
或- pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:
完整文档here
设置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(removeObserver
)
答案 1 :(得分:0)
您可以使用发布通知来完成此操作,
您将在用户更改页面时触发它。