UIPageViewController with child ViewControllers
我是iOS新手,目前有3个视图,并希望使用滑动手势在它们之间导航。滑动工作。红色的bg视图会首先按我的需要加载,并且滑动效果很好,但是点按“下一步”按钮并不会执行任何操作。任何人都可以给我一个提示吗?我处理这个错误,但不能似乎找到谷歌UIPageViewController with child ViewControllers
在我的项目的任何帮助,我有处理UIPageViewController一个MemberCardViewController:
class MemberCardViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
lazy var viewArray: [UIViewController] = {
return [self.ViewControllerInstance(name: "CalendarView"),
self.ViewControllerInstance(name: "IdCardView"),
self.ViewControllerInstance(name: "MemberInfoView")]
}()
private func ViewControllerInstance(name: String) -> UIViewController {
return UIStoryboard(name: "MemberCardViewController", bundle: nil).instantiateViewController(withIdentifier: name)
}
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
loadViewController(viewPosition: 1)
}
func loadViewController(viewPosition: Int) {
if let viewController = viewArray.get(at: viewPosition) {
setViewControllers([viewController], direction: .forward, animated: true, completion: nil)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
...
而现在,我还创建对应于身份证一个IdCardViewController(红色背景视图)
class IdCardViewController: UIViewController {
var pvc = MemberCardViewController()
@IBAction func loadRight(_ sender: Any) {
pvc.loadViewController(viewPosition: 2)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我现在面临的问题是,w ^母鸡下一步按钮被点击Id卡,我想加载成员信息视图,但现在没有任何反应,当它被点击。但是,我在MemberCardViewController的loadViewController()
方法中设置了断点,并且可以看到该应用程序在点击该按钮时到达它,但视图不会更改为Member Info
。
您没有分配任何东西给pvc
变量IdCardViewController
。因此,当您实例化IdCardViewController
的实例时,应该将MemberCardViewController
对象分配给pvc
变量。祝你好运!
编辑
变化
private func ViewControllerInstance(name: String) -> UIViewController {
return UIStoryboard(name: "MemberCardViewController", bundle: nil).instantiateViewController(withIdentifier: name)
}
到
private func ViewControllerInstance(name: String) -> UIViewController {
if name == "IdCardView"
{
if let vc = UIStoryboard(name: "MemberCardViewController", bundle: nil).instantiateViewController(withIdentifier: name) as? IdCardViewController {
vc.pvc = self
return vc
}
}
return UIStoryboard(name: "MemberCardViewController", bundle: nil).instantiateViewController(withIdentifier: name)
}
什么都在这里完成,实例化的IdCardViewController
实例中,MemberCardViewController
对象(这是self
在此之后案例)正被分配给pvc
变量。此外,为了使此代码正常工作,您必须为故事板中的“Id卡”视图控制器分配正确的类。为此,请在故事板中选择“Id Card”视图控制器的对象,并将其类别更改为“Identity Inspector”中的IdCardViewController
。 希望这有助于!
没有从你的代码中得到任何暗示的问题,你可以请你与我分享你的项目([email protected])。我会看看,并会更新你 – arunjos007