Tengo un controlador de vista con un botón, un índice y una función que se llama cuando se presiona el botón, aquí hay un ejemplo del código:

Controlador de vista:

func buttonPressed(){

index++

}

Luego tengo una clase en la que quiero acceder e imprimir el índice desde el controlador de vista

Clase:

print("Index is \(ViewController().index)")

Obviamente, esto no funciona, ¿alguien sabe cómo puedo acceder a esto? Realmente no puedo instanciarlo porque es un ViewController y no será el mismo índice. Creo.

-1
OriginalAlchemist 29 ene. 2016 a las 10:03

4 respuestas

La mejor respuesta

Puede guardar su índice en NSUserDefaults o en un archivo plist. Intente usar un getter y un setter para que persista automáticamente de la siguiente manera:

Xcode 8.3.3 • Swift 3.1.1

extension UserDefaults {
    var indexA: Int {
        get {
            return integer(forKey: "indexA")
        }
        set {
            set(newValue, forKey: "indexA")
        }
    }
}

Uso:

Para cargarlo

let indexA = UserDefaults.standard.indexA

Para configurarlo / cambiarlo

UserDefaults.standard.indexA = 10
4
Leo Dabus 31 ago. 2017 a las 20:44

Intente pasar la referencia del controlador de vista que tiene el índice y el botón a la clase a la que desea acceder.

A partir de ahí, puede acceder al mismo valor de índice y otras propiedades de ese controlador de vista en esa clase.

0
Vikas Dadheech 29 ene. 2016 a las 07:54
let vc = ViewController()  
print("index: \(vc.index)")

No es correcto porque vc no hay viewController, que contiene el botón en el que hizo clic. Tiene que ser declarado de nuevo

En el caso, debe tener un singleton de ViewController (por ejemplo: viewcontrollerInstall) y colocarlo en cualquier lugar para que pueda acceder En ViewDidLoad de ViewController estableces viewcontrollerInstall = self

Y en tu nueva llamada de clase:

print("Index is \(viewcontrollerInstall.index)")
0
Nguyen Hoan 29 ene. 2016 a las 07:40

Debieras:

  1. Agregue un modificador público o interno establecido para index para usarlo fuera de una clase

  2. Crea una instancia de ViewController

  3. Recuperar index de una instancia

    let vc = ViewController()
    print("index: \(vc.index)")
    
0
slashdot 29 ene. 2016 a las 07:14