viewpager tutorial pageview page example control ios objective-c swift uipageviewcontroller

ios - tutorial - uipageviewcontroller swift 4



Accediendo a variables desde otro ViewController en Swift (7)

Aquí está mi intento de convertir ese código a Swift:

func pageViewController(pageViewController: UIPageViewController!, viewControllerBeforeViewController viewController: UIViewController!) -> UIViewController! { var pageController = viewController as PageContentViewController var index: Int? = pageController.pageIndex if var idx: Int = index{ if idx == 0{ return nil } else{ idx-- return viewControllerAtIndex(idx) } } else{ return nil } } class PageContentViewController: UIViewController { var pageIndex: Int? }

Tengo el siguiente ViewController :

class PageContentViewController: UIViewController { var pageIndex: Int }

¿Cómo puedo acceder a pageIndex desde otro ViewController?

Necesito acceder a pageIndex en esta función:

func pageViewController(pageViewController: UIPageViewController!, viewControllerBeforeViewController viewController: UIViewController!) -> UIViewController! { //var index: Int //index = ? NSUInteger index = ((PageContentViewController*) viewController).pageIndex; // in Swift? if ((index == 0) || (index == NSNotFound)) { return nil; } index--; return [self viewControllerAtIndex:index]; // in Swift? }


Estaba enfrentando el mismo problema cuando tengo que usar token en todas las otras clases, la solución es bastante simple, lo que hice fue

var access = LoginViewController() token = access.token

pero el problema que encontró fue: usar el valor predeterminado para el token. Así que hice que la variable estática y usé esto en vista se cargó.

var token : String = "" var access = LoginViewController.self token = access.token


Resolví de esta manera. .

class StaticLinker { static var viewController : PageContentViewController? = nil } class PageContentViewController: UIViewController { var pageIndex: Int StaticLinker.viewController = self } class AnotherClass { StaticLinker.viewController.pageIndex = 100 }


Todo por defecto en swift es público, y por lo tanto, si declara algo como esto:

class SomeViewController: UIViewController { var someVariable: SomeType = someValue init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) } }

Puede acceder a ella siempre que tenga una instancia de ella:

var myCustomViewController: SomeViewController = SomeViewController(nibName: nil, bundle: nil) var getThatValue = myCustomViewController.someVariable


ViewController1.swift

class ViewController1: UIViewController { struct GlobalVariable{ static var myString = String() } }

ViewController2.swift

class ViewController2: UIViewController { print(ViewController1.GlobalVariable.myString) }


class color: UIViewController { var blue:Int = 90 }

acceda a él desde otra clase (asegúrese de llamar a la variable dentro de una función, de lo contrario obtendrá un error)

class ViewController: UIViewController{ var example:color = color() override func viewDidLoad() { super.viewDidLoad() // call it here print(example.blue) } }


class firstViewController: UIViewController{ var variableName: variableType = variableValue }

Puede acceder a esta variable en el secondViewController creando una instancia de firstViewController ()

class secondViewController: UIViewController{ var newVariableName = firstViewController() }

más adelante, use el newVariableName para acceder al valor de la variableName

newVariableName.variableName