2015-01-03 18 views
10

Come si imposta lo Stile separatore del mio UITableView in Swift? Voglio eliminare il separatore in modo che non ci sia una linea grigia tra le celle nella mia vista tabella. Qualche suggerimento sarebbe molto apprezzato. Quanto è già stato provato?Swift - UITableView set stile separatore

Ho trovato questo metodo in Objective-C

[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone] 

Ho fatto del mio meglio per tradurre questo a rapida con

self.tableView.setSeparatorStyle = UITableViewCellSeparatorStyle.None 

Ma questo presenta l'errore

'(UITableView, numberOfRowsInSection: Int) -> Int' does not have a member named 'setSeparatorStyle' 

In la documentazione della mela che fornisce queste dichiarazioni nell'obiettivo-C

typedef enum : NSInteger { 


UITableViewCellSeparatorStyleNone , 
    UITableViewCellSeparatorStyleSingleLine , 
    UITableViewCellSeparatorStyleSingleLineEtched 
} UITableViewCellSeparatorStyle; 

così ho provato di nuovo da tradurre al Swift usando

override func tableView(tableView: UITableView, setSeparatorStyle style: NSInteger) -> NSInteger { 
    return UITableViewCellSeparatorStyleNone 
} 

Ma questo getta solo un maggior numero di errori, "Uso di identificatore irrisolto 'UITableViewCellSeparatorStyleNone"

risposta

28

di spiegare perché non si può chiama lo setSeparatorStyle in Swift, ho bisogno di spiegare da dove proviene questo metodo in Objective-C. Se lo cerchi nell'intestazione (UITableView.h) non lo troverai. L'unica cosa dichiarata è questo:

@property (nonatomic) UITableViewCellSeparatorStyle separatorStyle; 

setSeparatorStyle è il setter generato automaticamente per una proprietà in Objective-C. Diciamo che si dichiara una proprietà in Objective-C, in questo modo:

@interface SomeClass: NSObject 

@property (nonatomic) id someProperty; 

@end 

Objective-C genererà automaticamente un setter e un metodo getter per la proprietà, con il getter è il nome del getter e il setter essere il nome con set prefisso.

così si può chiamare il getter in questo modo:

[object someProperty]

ed è possibile impostare la proprietà come questa: [object setSomeProperty:newValue]

Ora, questo è tutto grande, ma c'è un modo più breve per chiamare il setter e getter, ovvero dot sintassi, che assomiglia a questo:

object.someproperty = newValue; // setter

E il getter:

object.someproperty // getter

Ora a Swift, questo implicitamente generazione di un setter in questo modo setSomePropety non esiste più. Era sempre stato uno strano capriccio di Objective-C, quindi Swift introduce un modo unificato per impostare e ottenere proprietà. In Swift, c'è solo un modo per impostare e ottenere proprietà e sta usando la sintassi del punto, che è identica alla sintassi del punto in Objective-C.

Quindi, per rispondere alla tua domanda in realtà, è necessario rimuovere la parte set in setSeparatorStyle, e questo sarà il tuo nuovo codice:

self.tableview.separatorStyle = UITableViewCellSeparatorStyle.none 

Di solito non c'è bisogno di scrivere self, Swift è abbastanza intelligente per rendersi conto che si desidera utilizzare self.tableView se c'è solo una variabile denominata tableView nel campo di applicazione, in modo da poter scrivere

tableview.separatorStyle = UITableViewCellSeparatorStyle.none 

Ed Swift è anche abbastanza intelligente per capire che ciò che viene dopo che l'operatore di assegnazione (il segno di uguale, =) è probabilmente uno stile separatore, quindi è sufficiente scrivere .none.

tableview.separatorStyle = .none 
+2

Great post! In Swift4. Nessuno è stato rinominato in .none – Vincent

+0

Grazie! Mi ha lavorato. – Raja

3

guardare sotto il:

Attributes inspector > table view > separator Questo dovrebbe aiutare a cambiare lo stile di separazione o rimuoverlo completamente

+0

Grazie anche questa è una soluzione valida – TimWhiting

5

Per coloro che sono alla ricerca di Swift 2 e 3 notazione:

tableView.separatorStyle = UITableViewCellSeparatorStyle.None; 
+1

Grazie! Mi sta lavorando anche per Swift 3.0. – Raja

1

Io ho usato:

tableview.separatorStyle = .None 
Problemi correlati