2016-05-06 13 views
1

Also mache ich wahrscheinlich alles falsch, aber ich möchte eine Einkaufsliste App machen und ich habe zwei View-Controller, einen mit der Liste und einen mit einem Lehrbuch und Button zum Hinzufügen die Liste, aber ich kann nicht herausfinden, wie man das Array zu der anderen Klasse bekommt. Ich habe diesen Code so weit und die Fehler, die ich bekommen istSwift-Fehler Versuch, Array an eine andere Klasse zu übergeben

Instance member 'list' cannot be used in type 'mainViewController' 

Und dies ist mein Code

import UIKit 

class mainViewController: UIViewController { 
    var list:[String] = [""] 
    @IBOutlet weak var item: UITextField! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.hideKeyboardWhenTappedAround() 
     // Do any additional setup after loading the view. 
    } 
    func hideKeyboardWhenTappedAround() { 
     let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(mainViewController.dismissKeyboard)) 
     view.addGestureRecognizer(tap) 
    } 

    func dismissKeyboard() { 
     view.endEditing(true) 
    } 

    @IBAction func AddToList(sender: UIButton) { 
     list.append(item.text!) 

    } 

    static func getList(inout Array: [String]) -> [String] { 
     return list 
    } 

} 

Jede Hilfe sehr geschätzt, bitte halten positive obwohl und im Kopf behalten Ich bin sehr neu auf dieses Forum und schnell. Vielen Dank!

Antwort

0

Die Fehlermeldung ist sehr deutlich, dass Sie versuchen, auf ein Instanzfeld im Typkontext (ohne Instanz) zuzugreifen.

Um es zu beheben, entfernen Sie einfach static in getList Funktion.

PS: Bitte folgen Swift Namenskonventionen Ihrer Klassennamen

+0

nutzen Wenn ich aus dieser Funktion statisch entfernt würde ich noch in der Lage sein, dass in meiner anderen Klasse zu nennen? Und wenn ich kann, wie würde ich es tun, damit ich immer noch die Anzahl aus dem Array bekommen kann? Gibt es eine bessere Möglichkeit, das Array in die andere Klasse zu bekommen? –

+0

Wenn ich statische von dieser Funktion entfernte, würde ich noch in meiner anderen Klasse anrufen können? Und wenn ich kann, wie würde ich es tun, damit ich immer noch die Anzahl aus dem Array bekommen kann? Gibt es eine bessere Möglichkeit, das Array in die andere Klasse zu bekommen? –

+0

Bitte lernen OOP. Sie müssen eine Instanz erstellen und dann die Instanzmethode aufrufen. etwas wie 'var controller = mainViewController(); controller.getList() ' –

Verwandte Themen