【问题标题】:Updating UIPageControl from another view controller从另一个视图控制器更新 UIPageControl
【发布时间】:2015-11-24 18:15:11
【问题描述】:

我是一个快速的开发者。

我正在为一个应用制作一个演练(带有登录按钮的简短介绍)。我设法在屏幕底部放置了一个固定的登录按钮,并在其上方放置了 UIPageControl 元素(登录按钮)。 所以我在放置固定按钮的第一个 ViewController 上有 UIPageControl 元素(称为 pageControl)(1),我有一个 PageViewController(2)。我为 UIPageControl 制作了一个名为 pageControl 的 IBOutlet。因此,我想在页面更改时更新 UIPageControl,但每当我尝试在 2 中执行此操作时(它会崩溃并显示一条奇怪的消息“致命错误:在展开可选值 pageControl 时意外发现 nil”。

问题来了。

如果 UIPageControl 放在其他 ViewController 中,如何更改 PageViewController 中 pageControl.currentPage 的值?

【问题讨论】:

    标签: ios swift uipageviewcontroller uipagecontrol


    【解决方案1】:

    您需要一个 xib 文件和 2 个 swift 文件来执行此操作。让我详细解释一下:

    xib file: DefaultVc.xib
    
    swift file: DefaultVc.swift, LoaderVc.swift
    

    显然,您必须有图像才能滑过。在LoaderVc.swift中声明它们

    let grayView=UIView(frame: CGRectMake(0, 0, self.view.frame.size.width , self.view.frame.size.height))
    grayView.backgroundColor=UIColor.grayColor()
    self.view.addSubview(grayView)
    
    let image: UIImage = UIImage(named: imageFile)!
    bgImage = UIImageView(image: image)
    bgImage!.frame = CGRectMake(25,100,270,250)
    self.view.addSubview(bgImage!)
    
    let DynamicView=UIView(frame: CGRectMake(0, 350, self.view.frame.size.width, 200))
    DynamicView.backgroundColor=UIColor.redColor
    self.view.addSubview(DynamicView)
    
    
    let label = UILabel(frame: CGRectMake(0, DynamicView.frame.size.height + 20, view.frame.width, 400))
     label.textColor = UIColor.whiteColor()
     label.text = titleText
     label.numberOfLines = 3
     label.textAlignment = .Center
     label.font = UIFont(name: label.font.fontName, size: 15)
     view.addSubview(label)
    

    然后在DefaultVc.swift中添加页面视图控制器数据源

    class DefaultVc: UIViewController, UIPageViewControllerDataSource{
    var pageViewController : UIPageViewController?
    var pageImages : Array<String> = ["imageFlash1.png", "imageFlash2.png", "imageFlash3.png","imageFlash4.png"]
    

    然后在viewDidLoad方法中:

    pageViewController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil)
    pageViewController!.dataSource = self
    
    let startingViewController: InstructionView = viewControllerAtIndex(0)!
    let viewControllers: NSArray = [startingViewController]
    pageViewController!.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: false, completion: nil)
    pageViewController!.view.frame = CGRectMake(0, -50, view.frame.size.width, view.frame.size.height)
    
    addChildViewController(pageViewController!)
    view.addSubview(pageViewController!.view)
    pageViewController!.didMoveToParentViewController(self)
    

    之后你需要添加登录按钮的功能UIPageViewController的功能

    注意:您可以相应地添加和更改按钮、图像和动态视图的大小

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 2016-04-27
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      相关资源
      最近更新 更多