Ios 如何从页面视图控制器创建按钮iAction
当用户首次使用应用程序时,我有一个演练/入职流程。我用一个页面视图控制器来实现这一点。在最后一个屏幕上,我有一个按钮,我只是将其拖动到选项卡栏视图控制器以创建一个序列。但我现在需要一个IBaction来点击按钮。我试着用CTRL键拖动按钮,但我得到的唯一选择是“退出”,而不是一个动作。如何为此按钮创建iAction 以下是页面视图控制器代码Ios 如何从页面视图控制器创建按钮iAction,ios,swift,Ios,Swift,当用户首次使用应用程序时,我有一个演练/入职流程。我用一个页面视图控制器来实现这一点。在最后一个屏幕上,我有一个按钮,我只是将其拖动到选项卡栏视图控制器以创建一个序列。但我现在需要一个IBaction来点击按钮。我试着用CTRL键拖动按钮,但我得到的唯一选择是“退出”,而不是一个动作。如何为此按钮创建iAction 以下是页面视图控制器代码 import UIKit class PageViewController: UIPageViewController, UIPageViewContro
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {
var pageControl = UIPageControl()
// MARK: UIPageViewControllerDataSource
lazy var orderedViewControllers: [UIViewController] = {
return [self.newVc(viewController: "sbBlue"),
self.newVc(viewController: "sbRed"),
self.newVc(viewController: "sbGreen")]
}()
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
// This sets up the first view that will show up on our page control
if let firstViewController = orderedViewControllers.first {
setViewControllers([firstViewController],
direction: .forward,
animated: true,
completion: nil)
}
configurePageControl()
// Do any additional setup after loading the view.
}
func configurePageControl() {
// The total number of pages that are available is based on how many available colors we have.
pageControl = UIPageControl(frame: CGRect(x: 0,y: UIScreen.main.bounds.maxY - 50,width: UIScreen.main.bounds.width,height: 50))
self.pageControl.numberOfPages = orderedViewControllers.count
self.pageControl.currentPage = 0
self.pageControl.tintColor = UIColor.white
self.pageControl.pageIndicatorTintColor = UIColor.lightGray
self.pageControl.currentPageIndicatorTintColor = UIColor.white
self.view.addSubview(pageControl)
}
func newVc(viewController: String) -> UIViewController {
return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: viewController)
}
// MARK: Delegate methords
func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
let pageContentViewController = pageViewController.viewControllers![0]
self.pageControl.currentPage = orderedViewControllers.index(of: pageContentViewController)!
}
// MARK: Data source functions.
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex - 1
// User is on the first view controller and swiped left to loop to
// the last view controller.
guard previousIndex >= 0 else {
//return orderedViewControllers.last
// Uncommment the line below, remove the line above if you don't want the page control to loop.
return nil
}
guard orderedViewControllers.count > previousIndex else {
return nil
}
return orderedViewControllers[previousIndex]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
guard let viewControllerIndex = orderedViewControllers.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex + 1
let orderedViewControllersCount = orderedViewControllers.count
// User is on the last view controller and swiped right to loop to
// the first view controller.
guard orderedViewControllersCount != nextIndex else {
//return orderedViewControllers.first
// Uncommment the line below, remove the line above if you don't want the page control to loop.
return nil
}
guard orderedViewControllersCount > nextIndex else {
return nil
}
return orderedViewControllers[nextIndex]
}
}
确保序列图像板中的页面视图控制器已连接到相应的控制器文件
由于您只想在用户默认设置中设置一个值,显示用户已“看到第三个屏幕”,因此您可以:
- 在第三个VC的
中设置值viewDidLoad()
- 在第三个VC中的'prepareForSegue'中设置值
- 在选项卡ViewController的第一个选项卡的VC的
中设置值viewDidLoad()
从您的评论来看,您似乎选择了选项“A”谢谢。但是,在这样做之后,我再也没有用按钮进入第三个屏幕。它只是循环通过前2个,循环那些,永远不会到达第3个?“我有一个按钮,我只是拖到一个选项卡栏视图控制器”。。。您的意思是页面视图控制器中显示的最后一个VC是
UITabBarController
?因此,此时用户可以在页面中切换选项卡?@DonMag,入口点是一个具有3个演练屏幕的页面视图控制器。在第三个屏幕上,我有一个按钮。我按住CTRL键将该按钮拖动到一个选项卡视图控制器上,该控制器基本上就是主屏幕。这只是一个片段。如果不是第一次打开应用程序,则应默认为选项卡视图控制器。我需要在第三个walktrhough屏幕上点击iAction按钮来创建用户默认值,这样应用程序就知道不再显示漫游屏幕。您可以在第三个walkthrough屏幕(其视图控制器)中创建/附加iAction,或者,可能是更好的选项,在第三个VC中实现prepareforsgue
,并在那里设置您的用户默认值。@DonMag,这就是问题所在。如果我将第三个VC链接到页面视图控制器类,则第三个VC永远不会出现,它只循环通过前两个。因此,我不能这样做,因此我也不能实现prepareForSegue?3 VC的默认类是UIViewController