2014-07-08 8 views
7

(Xcode6, iOS 8, iPhone, Swift)Come aggiungere un pulsante "Continua" per un top barra di navigazione in iOS/Swift

vorrei aggiungere un pulsante "Continua", a destra della barra di navigazione .

Come può essere realizzato? Ho provato con alcuni dei metodi disponibili su UIBarButtonItem, ma non riesco a farlo funzionare.

mio meglio fino ad oggi è stato:

var b = UIBarButtonItem(title: "Continue", style: UIBarButtonItemStyle, target: self, action: nil) 
    self.navigationItem.rightBarButtonItem = b 

ma sto ottenendo un errore nella prima riga. Non mi piace il parametro "stile". Ho anche provato

var b = UIBarButtonItem(title: "Continue", style: UIBarButtonItemStylePlain, target: self, action: nil) 

Ma senza fortuna. Ancora bloccato sul parametro di stile. Qualche idea? tyvm Keith: D

EDIT: Ai posteri, la seguente linea comprende anche un action impostazione:

var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action:"sayHello") 

Riferimento: How to set the action for a UIBarButtonItem in Swift

+2

'UIBarButtonItemStyle.Plain'? Inoltre, prova ad usare 'let' ovunque possibile (es. Qui) – Jack

+0

FFFFUUUUU ..... Grazie !!! E perché usare 'let'? Che differenza fa? Inoltre, inserisci questo come risposta e lo accetterò. – kmiklas

+1

@kmiklas Dovresti controllare il libro di Apple su Swift. Il problema let vs var viene risolto nelle prime due pagine e la risposta a questa domanda può essere trovata nel capitolo delle enumerazioni. –

risposta

10
enum UIBarButtonItemStyle : Int { 
case Plain 
case Bordered 
case Done 
} 

Quindi non si dovrebbe scrivere 'UIBarButtonItemStyle', ma utilizzare '.Plain' (notare il punto che precede la parola):

var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action: nil) 

Per aggiungere un'azione effettiva al pulsante si utilizza la seguente (supponendo che il metodo sayHello() esiste):

var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action: Selector("sayHello")) 

Edit: errore di battitura nel codice

+0

Ah ... il 'punto' mi fa nuovamente inciampare. Nei miei sforzi ho provato 'style: Plain', che non ha funzionato. – kmiklas

+0

Come domanda successiva, come viene impostato correttamente il parametro "azione"? Ho provato 'action: sayHello()' e 'action: self.sayHello()' e 'action: @selector (sayHello:)' senza fortuna – kmiklas

+0

Ho modificato la mia risposta per includere anche l'impostazione di un'azione. – Joride

2

enumerazioni a Swift sono molto diverse rispetto objC, in un modo molto buono:]

Qui è necessario utilizzare:

UIBarButtonItemStyle.Plain 

È anche possibile fare:

var b = UIBarButtonItem(title: "Continue", style: .Plain, target: self, action: nil) 

per la massima semplicità!

Nota a margine: utilizzare let anziché var ovunque sia possibile, è meglio per prestazioni, salute, ecc.

Problemi correlati