-1
ich eine andere Geschichte Bord starten mag, die iPad verwendet, aber wenn ich den Code ausführen werde ich Fatal ErrorSprung zu einem anderen Storyboard
hier erhalten ist mein Codes
class pageVC : UIPageViewController , UIPageViewControllerDataSource , UIPageViewControllerDelegate {
let pageVC = UIPageControl()
lazy var VCArr : [UIViewController] = {
return [self.VCInstance(name : "FirtsVC"),
self.VCInstance(name : "SecondVC"),
self.VCInstance(name :"ThirdVC"),
self.VCInstance(name :"FourthVC"),
self.VCInstance(name :"FivethVC")]
}()
private func VCInstance(name : String) -> UIViewController {
let modelName = UIDevice.current.modelName
if modelName == "iPad Mini 3" {
return UIStoryboard(name : "ipadmini" , bundle : nil).instantiateViewController(withIdentifier: name)
}else {
return UIStoryboard(name : "Main" , bundle : nil).instantiateViewController(withIdentifier: name)
}
}
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.delegate = self
let modelName = UIDevice.current.modelName
print(modelName)
if modelName == "iPad Mini 3" {
print("OK")
let mainStoryboard: UIStoryboard = UIStoryboard(name: "ipadmini" , bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "pageVC")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = viewController
}
let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore")
if launchedBefore {
print("Not first launch!")
print("Should Launch MainTabBarController!")
} else {
print("First launch, setting UserDefault.")
UserDefaults.standard.set(true, forKey: "launchedBefore")
}
var shouldAutorotate: Bool {
return false
}
var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let value = UIInterfaceOrientation.portrait.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
UIViewController.attemptRotationToDeviceOrientation()
}
func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return [UIInterfaceOrientationMask.portrait ]
}
if VCArr.first != nil {
print("first Page Reached!")
}
if let firstVC = VCArr.first {
setViewControllers([firstVC] , direction: .forward , animated: true, completion: nil)
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let view = self.pageVC.currentPage
for view in self.view.subviews {
if view is UIScrollView {
let pageVC = UIPageControl()
self.pageVC.pageIndicatorTintColor = UIColor.lightText
self.pageVC.currentPageIndicatorTintColor = UIColor.white
self.pageVC.backgroundColor = UIColor.white
self.pageVC.numberOfPages = VCArr.count
self.pageVC.center = self.view.center
self.view.addSubview(self.pageVC)
pageVC.layer.position.y = self.view.frame.height - 150;
}else if view is UIPageControl{
view.backgroundColor = UIColor.clear
pageVC.numberOfPages = 5
pageVC.center = self.view.center
pageVC.layer.position.y = self.view.frame.height - 100 ;
}
}
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let previousIndex = viewControllerIndex-1
guard previousIndex >= 0 else {
return nil
}
guard VCArr.count > previousIndex else {
return nil
}
return VCArr[previousIndex]
}
public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?{
guard let viewControllerIndex = VCArr.index(of: viewController) else {
return nil
}
let nextIndex = viewControllerIndex+1
guard nextIndex < VCArr.count
else {
return nil
}
guard VCArr.count > nextIndex else {
return nil
}
return VCArr[nextIndex]
}
public func presentationCount(for pageViewController: UIPageViewController) -> Int{
return VCArr.count
}
public func presentationIndex(for pageViewController: UIPageViewController) -> Int{
guard let firstViewController = viewControllers?.first , let firstViewControllerIndex = VCArr.index(of: firstViewController) else {
return 0
}
let firstIndex = firstViewControllerIndex - 1
guard firstIndex >= VCArr.count else {
return VCArr.count
}
return firstViewControllerIndex
}
public func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
self.pageVC.currentPage = pageViewController.viewControllers!.first!.view.tag
if(viewControllers!.first?.view.tag == 4) {
if (VCArr.last!.isViewLoaded)
{
let modelName = UIDevice.current.modelName
if modelName == "iPad Mini 3" {
print("OK")
let mainStoryboard: UIStoryboard = UIStoryboard(name: "ipadmini" , bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "FivethVC")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = viewController
}
else {
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main" , bundle: nil)
let viewController = mainStoryboard.instantiateViewController(withIdentifier: "FivethVC")
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.window?.rootViewController = viewController
print("Last Page Reached!!!")
}
}
}
}
}
public extension UIDevice
{
var modelName: String {
var systemInfo = utsname()
uname(&systemInfo)
let machineMirror = Mirror(reflecting: systemInfo.machine)
let identifier = machineMirror.children.reduce("") { identifier, element in
guard let value = element.value as? Int8 , value != 0 else { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
switch identifier {
case "iPod5,1":
return "iPod Touch 5"
case "iPod7,1":
return "iPod Touch 6"
case "iPhone3,1", "iPhone3,2", "iPhone3,3":
return "iPhone 4"
case "iPhone4,1":
return "iPhone 4s"
case "iPhone5,1", "iPhone5,2":
return "iPhone 5"
case "iPhone5,3", "iPhone5,4":
return "iPhone 5c"
case "iPhone6,1", "iPhone6,2":
return "iPhone 5s"
case "iPhone7,2":
return "iPhone 6"
case "iPhone7,1":
return "iPhone 6 Plus"
case "iPhone8,1":
return "iPhone 6s"
case "iPhone8,2":
return "iPhone 6s Plus"
case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":
return "iPad 2"
case "iPad3,1", "iPad3,2", "iPad3,3":
return "iPad 3"
case "iPad3,4", "iPad3,5", "iPad3,6":
return "iPad 4"
case "iPad4,1", "iPad4,2", "iPad4,3":
return "iPad Air"
case "iPad5,3", "iPad5,4":
return "iPad Air 2"
case "iPad2,5", "iPad2,6", "iPad2,7":
return "iPad Mini"
case "iPad4,4", "iPad4,5", "iPad4,6":
return "iPad Mini 2"
case "iPad4,7", "iPad4,8", "iPad4,9":
return "iPad Mini 3"
case "iPad5,1", "iPad5,2":
return "iPad Mini 4"
case "iPad6,7", "iPad6,8":
return "iPad Pro"
case "AppleTV5,3":
return "Apple TV"
case "i386", "x86_64":
return "Simulator"
default:
return identifier
}
}}
** ich verwenden mag Storyboards für Geräte und der App-Start Feind Beispiel iPad mini Storyboard, wenn ich das Programm auf dem iPad mini laufen **