2014-08-29 6 views
5

Ich verstehe nicht, warum der Compiler nach einem Argument für den Stilparameter in diesem System-Stil UIBarButtonItem Initialisierer fragt - es hat das nicht Parameter an erster Stelle. Hilfe? Ist das ein Fehler mit Swift?"Fehlendes Argument für Parameter 'Stil' in Aufruf" Fehler beim Erstellen von System UIBarButtonItem

class ExpensesViewController: UIViewController { 

    lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: Selector("newExpenseBarButtonItemTapped:")) 

    func newExpenseBarButtonItemTapped() { 

    } 

} 
+0

Haben Sie jemals eine gültige Antwort dafür erhalten? –

+0

@AaronBratcher Ja, siehe unten. –

Antwort

3

Dies wird die Compiler-Fehlermeldung entfernen:

class ExpensesViewController: UIViewController { 

    lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.UIBarButtonSystemItemAdd.value, 
       target:self, action:Selector("newExpenseBarButtonItemTapped:")) 

    func newExpenseBarButtonItemTapped() { 

    } 

} 

.Add

+0

Was ist dieser '.value', den Sie nach' UIBarButtonSystemItem.UIBarButtonSystemItemAdd' hinzufügen? Kann nicht scheinen, um den Fehler für mich weg zu bekommen :( –

+2

Die obige Antwort scheitert komplett mit Xcode 6.1b2 –

+0

Failing für mich auch, und wenn ich den Initialisierer versuche, basierend auf dem Setzen eines Titels, gibt es mir einen Fehler, dass Ich vermisse den Landschaftsbildparameter und scheint komplett durcheinander zu geraten –

3

Keine Notwendigkeit, kein gültiger Wert ist, das Selector Verb für die Aktion hinzuzufügen.

class ExpensesViewController: UIViewController { 

lazy var newExpenseBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Add, 
                 target:self, 
                 action:"newExpenseBarButtonItemTapped") 


func newExpenseBarButtonItemTapped() 
{ 

} 

} 
-1

Ich konnte das beheben, indem ich die Schaltfläche implizit optional auspackte und sie später initialisierte.

+0

Bitte Code anzeigen. – Makyen

2

Wenn Sie self im Klassenbereich verwenden, erhalten Sie eine Menge komischer Compiler-Nachrichten. Es sieht so aus, als wäre der schnelle Compiler noch nicht ausgereift. Der folgende Code funktioniert mit mir auf Xcode Version 6.1.1 (6A2008a).

class Foo { 
    var playButton:UIBarButtonItem? = nil 

    func initButtons(){ 
     self.playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: Selector("doPlay:")) 
    } 
} 
Verwandte Themen