从另一个视图控制器更新 UIPageControl
Updating UIPageControl from another view controller
我是 swift 开发人员。
我正在为一个应用制作演练(带有登录按钮的简短介绍)。我设法在屏幕底部放置了一个固定的登录按钮,并在其上方放置了 UIPageControl 元素(登录按钮)。
所以我在放置固定按钮 (1) 的第一个 ViewController 上有 UIPageControl 元素(称为 pageControl),我有一个 PageViewController (2)。我为 UIPageControl 创建了一个名为 pageControl 的 IBOutlet。所以我想在页面更改时更新 UIPageControl,但是每当我尝试在 2 中执行它时(它会崩溃并显示一条奇怪的消息 "fatal error: unexpectedly found nil while unwrapping an Optional value pageControl"。
这是问题。
如果 UIPageControl 放在其他 ViewController 中,如何更改 PageViewController 中的 pageControl.currentPage 值?
您需要一个 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功能
注意:您可以相应地添加和更改按钮、图像和动态视图的大小
我是 swift 开发人员。
我正在为一个应用制作演练(带有登录按钮的简短介绍)。我设法在屏幕底部放置了一个固定的登录按钮,并在其上方放置了 UIPageControl 元素(登录按钮)。 所以我在放置固定按钮 (1) 的第一个 ViewController 上有 UIPageControl 元素(称为 pageControl),我有一个 PageViewController (2)。我为 UIPageControl 创建了一个名为 pageControl 的 IBOutlet。所以我想在页面更改时更新 UIPageControl,但是每当我尝试在 2 中执行它时(它会崩溃并显示一条奇怪的消息 "fatal error: unexpectedly found nil while unwrapping an Optional value pageControl"。
这是问题。
如果 UIPageControl 放在其他 ViewController 中,如何更改 PageViewController 中的 pageControl.currentPage 值?
您需要一个 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功能
注意:您可以相应地添加和更改按钮、图像和动态视图的大小