- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试实现一个 PageViewController,当按下按钮时它会切换到不同的 ViewController。我可以在 viewDidLoad() 期间使用 setViewControllers 方法成功加载每个“子”ViewController。
但是,当我在 viewDidLoad() 之外调用 setViewControllers 方法时,它不会更改当前的“子”ViewController。
您可以在 viewDidLoad() 期间随时调用 setViewControllers 方法吗?或者只调用一次?还有一种方法可以更改 pageviewcontrollers 数据源扩展中的变量?
我的项目由一个带有“设置”按钮的条目 ViewController 和一个 ContainerView 组成。在 ContainerView 内部,我有 UIPageViewController。
PageViewController 的代码:
import UIKit
class PageViewController: UIPageViewController {
var slides = [SlideItem]()
var currentIndex: Int!
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
initSlides()
}
override func viewDidLoad() {
super.viewDidLoad()
if let viewController = viewSlideViewController(currentIndex ?? 0){
let viewControllers = [viewController]
setViewControllers(viewControllers, direction: .forward, animated: true, completion: nil)
}
dataSource = self
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func viewSlideViewController(_ index: Int) -> SlideViewController? {
guard let storyboard = storyboard,
let page = storyboard.instantiateViewController(withIdentifier: "SlideViewController") as? SlideViewController else {
return nil
}
page.slide = slides[index]
page.slideIndex = index
return page
}
func viewSettingsViewController(_ index: Int) -> SettingsViewController? {
guard let storyboard = storyboard,
let page = storyboard.instantiateViewController(withIdentifier: "SettingsViewController") as? SettingsViewController else {
return nil
}
return page
}
func initSlides(){
slides.append(SlideItem.init(filename: "Slide 1", comparison: false, highYield: false, videoURL: nil,
groupOrganSystem: ["A"],
groupMedicalSpecialty: ["B"]))
slides.append(SlideItem.init(filename: "Slide 2", comparison: false, highYield: false, videoURL: nil,
groupOrganSystem: ["A"],
groupMedicalSpecialty: ["B"]))
}
func sidebarCommands(button: String, state: Bool){
switch button {
case "settings":
self.setViewControllers([viewSettingsViewController(0)!], direction: .forward, animated: false, completion: nil)
print("settings")
default:
return
}
}
}
扩展:
extension PageViewController : UIPageViewControllerDataSource {
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
if let viewController = viewController as? SlideViewController,
let index = viewController.slideIndex,
index > 0 {
return viewSlideViewController(index - 1)
}
return nil
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
if let viewController = viewController as? SlideViewController,
let index = viewController.slideIndex,
(index + 1) < slides.count {
return viewSlideViewController(index + 1)
}
return nil
}
}
最佳答案
可以这样使用UIPageviewController:(继承) https://medium.com/how-to-swift/how-to-create-a-uipageviewcontroller-a948047fb6af
关于ios - UIPageViewController setViewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386289/
我有一个简单的问题:我的自定义 UITabBarController子类同时覆盖 setViewControllers:和 setViewControllers:animated: .在 Storyb
我正在尝试实现一个 PageViewController,当按下按钮时它会切换到不同的 ViewController。我可以在 viewDidLoad() 期间使用 setViewController
我正在尝试使用 NEXT 按钮更改 UIPageViewController 的当前 ViewController。所以我使用委托(delegate)在我的 mainViewController 中调
我遇到了一个奇怪的问题,我不知道这是我的错误(最有可能)还是 UINavigationController 中的错误。 我在我的应用程序中使用 UINavigationController。在某些情况
当我设置 UIPageViewController 时,我无法理解这行代码: [self.pageViewController setViewControllers:@[startingViewC
我遇到了一个非常奇怪的情况 - 调用 method UINAvigationController -> setViewControllers:animated: 导致应用程序崩溃。仅在 iOS 10.
我正在尝试使用名为 Remenu 的第三方下拉菜单,可在此处找到 https://github.com/romaonthego/REMenu 菜单正在出现,但是当我尝试单击某个项目时,我总是看到黑屏。
我正在尝试使用导航菜单从一个 View Controller 转到另一个 View Controller 。我的问题是它将从 AddNewHomeTableViewController 访问代码,但不
这是我的层次结构: A - B - C - D (tabs) | | | | | | | | ----------------> AddEventViewController
我发现 setNavigationBarHidden 在 setViewControllers 之后不起作用? 这是我的代码: HomeNavController.swift: class HomeN
我有一个 UIPageViewController,其中有两个 UIViewController 作为子级。我希望用户能够在 subview 之间进行分页,但我也希望能够自动调用页面。 我已经尝试了使
“无法使用类型为‘([AnyObject],方向:UIPageViewControllerNavigationDirection,动画:Bool,完成:nil)’的参数列表调用”‘setViewCon
一段时间以来,我一直在处理这个(有点)随机错误,但无法找出问题所在。上下文:我正在创建一个 UISplitView iPad 应用程序,它在主视图中有一个 UINavigationController
我正在使用具有水平滚动功能的 UIPageViewController...只要用户滚动,UIPageControl 就会正常工作,以编程方式跳转到下一页或上一页时会出现问题 [self.pageVi
注意到奇怪的事情:当您使用 setViewControllers:animated 替换 UINavigationController 中的 View Controller 堆栈时:动画过程中显示后退
我的 UINavigationController 有一个奇怪的问题。 我编写了一个应用程序来显示三个级别的数据。 ( Root View :选择数据 I,第二 View :选择数据 II,第三 Vi
我第一次尝试让 UIPageViewController 工作,但每当我尝试设置它的 View Controller 时,我似乎都遇到了麻烦。 override func viewDidLoad()
问题来了。我在 UINavigationController 中使用以下代码来交换 rootViewController。我需要能够在多个不同的屏幕之间交换 rootViewController 并允
我正在制作一个使用 UIPageViewController 在页面之间导航的应用程序。一切正常,除了当我尝试手动更改使用 setViewControllers 显示的 View Controller
我尝试在用户点击按钮时更改导航 Controller 中的 View Controller ,因此我声明了以下代码: if standingsViewController == nil { st
我是一名优秀的程序员,十分优秀!