在填写完整个屏幕后,将点缀的UIPageControls带到前面我遇到了一些麻烦。
这是我目前的代码:
import UIKit
class ViewController: UIViewController, UIPageViewControllerDataSource {
//This outlet wasn't originally there. Added a UIPageControl as an attempt to solve my issue
@IBOutlet var pageControl: UIPageControl!
var pageViewController : UIPageViewController?
var pageTitles : Array<String> = ["Orc", "Elven", "Undead"]
var pageImages : Array<String> = ["Plain_Orc.png", "Plain_Elf.png", "Plain_Undead.png"]
var currentIndex : Int = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.pageViewController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil)
self.pageViewController!.dataSource = self
let startingViewController: PageContentViewController = self.viewControllerAtIndex(0)!
let viewControllers: NSArray = [startingViewController]
self.pageViewController!.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: nil)
self.pageViewController!.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height + 37);
self.addChildViewController(self.pageViewController!)
//self.view.addSubview(self.pageViewController!.view)
//replacing addSubview from insane-36
self.view.insertSubview(pageViewController!.view, belowSubview: self.pageControl!)
self.pageViewController!.didMoveToParentViewController(self)
//Bring pagecontrols to front? (DOsESN'T WORK)
//self.view.bringSubviewToFront(self.pageViewController!.view)
//attempt to fix above code from insane-36
view.bringSubviewToFront(self.pageControl!)
view.sendSubviewToBack(self.pageViewController!.view)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController?
{
var index = (viewController as PageContentViewController).pageIndex
if (index == 0) || (index == NSNotFound) {
return nil
}
index--
println("Decreasing Index: \(String(index))")
return self.viewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController?
{
var index = (viewController as PageContentViewController).pageIndex
if index == NSNotFound {
return nil
}
index++
println("Increasing Index: \(String(index))")
if (index == self.pageTitles.count) {
return nil
}
return self.viewControllerAtIndex(index)
}
func viewControllerAtIndex(index: Int) -> PageContentViewController?
{
if self.pageTitles.count == 0 || index >= self.pageTitles.count
{
return nil
}
// Create a new view controller and pass suitable data.
let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as PageContentViewController
pageContentViewController.imageFile = self.pageImages[index]
pageContentViewController.titleText = self.pageTitles[index]
pageContentViewController.pageIndex = index
self.currentIndex = index
return pageContentViewController
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int
{
return self.pageTitles.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int
{
return 0
}
}
我认为将pageViewController视图置于前面的行将解决我的问题,但它不起作用。希望有人能给我一个正确的方向:)
答案 0 :(得分:5)
使用以下任一方法将 UIPageViewController 的视图发送到 UIPageControl 的背面,
view.insertSubview(pageViewController.view, belowSubview:self.pageControl)
view.bringSubviewToFront(self.pageControl) // after you have added the UIPageViewController's view
view.sendSubviewToBack(self.pageViewController.view)