2014-09-12 18 views
6

Quindi ho appena installato Xcode 6GM e ho giocato con la mia app iOS7 sul simulatore con iOS8.left circle in modalità di modifica UITableViewCell appare in iOS8

Ho un UITableView che è in modalità di modifica e ora c'è un cerchio sul lato sinistro della cella che non appare quando è in esecuzione su iOS7.

Ho dato un'occhiata alla documentazione per iOS8, ma non vedo nuove costanti e sto usando UITableViewCellEditingStyleNone e UITableViewCellSelectionStyleNone.

Questo cerchio scompare quando tableView.editing = NO, inoltre consente MultipleSelectionDuringEditing = YES.

Se qualcuno mi può dire cosa sta succedendo sarebbe fantastico :)

EDIT: compilazione dai XCode6GM sul mio iPhone in esecuzione iOS7.1 mi dà il cerchio troppo. Sospetto di un bug con XCode6GM?

Ecco uno screenshot con i cerchi:

enter image description here

+0

si è in grado di mostrare una schermata del "Circolo di sinistra". Per vostra informazione, c'è una nuova proprietà aggiunta a UIView per tutto l'oggetto ereditato da esso. Potrebbe essere il "Cerchio sinistro" che hai menzionato. Vedi: http://stackoverflow.com/questions/25762723/remove-separatorinset-on-ios-8-uitableview-for-xcode-6-iphone-simulator – Ricky

+0

@Ricky non sembra essere .. questo è come l'UITableViewEditingStyle non documentato con l'indice 3 che ti dà un cerchio con un segno di spunta in esso quando selezionato, tranne la parte dispari è che non riesco nemmeno a farlo "controllare". Ho passato un'ora a passare i nuovi documenti e un'altra ora a trafficare prima di decidere di pubblicare su SO. – believesInSanta

+0

(Nel caso in cui questo si trova da altri con un problema leggermente diverso.) ero turbato dal circolo di sovrapposizione troppo, ma nel mio caso ho voluto fare uso di esso. Poi ho ricordato che avevo implementato quanto segue: '- (BOOL) tableView: (UITableView *) tableView shouldIndentWhileEditingRowAtIndexPath: (NSIndexPath *) indexPath { return NO; } ' Ho cambiato il ritorno in' SÌ' e tutto andava bene. – mts

risposta

6

Ho appena avuto questo problema fastidioso durante la migrazione la mia app per iOS 8.

Ecco la soluzione che ho trovato ... aggiungere qualcosa di simile nel tuo UITableViewCell sottoclasse:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 
    for(UIView* subview in self.subviews) 
     if([NSStringFromClass(subview.class) isEqualToString:@"UITableViewCellEditControl"]) 
      subview.hidden = YES; 
} 

Spero che questo sarà documentata/fisso presto ...

+0

UITableViewCellEditControl eh? wth ... ma ben fatto! :) – believesInSanta

+2

Questa è una bella soluzione e sembra che sia l'unico modo per sbarazzarsi di quei cerchi grigi quando il tavolo è allowsMultipleSelectionDuringEditing impostata su YES. Coppia piccole cose che aggiungono che: primo, farlo solo per iOS 8 avvolgendo con - se (NSFoundationVersionNumber> NSFoundationVersionNumber_iOS_7_1) {}.E in secondo luogo, aggiungere un'interruzione per uscire dal ciclo quando la prima sottoview viene nascosta. –

2

penso di avere un soluzione migliore, aggiungere questo codice alla UITableViewCell personalizzato:

- (void)addSubview:(UIView *)view { 
    [super addSubview:view]; 
    if([NSStringFromClass(view.class) isEqualToString:@"UITableViewCellEditControl"]) { 
     view.hidden = YES 
    } 
} 
+1

Potrebbe essere rischioso, chissà per cosa il sistema sta usando quella sottoview per. Preferisco la risposta originale che rende la vista nascosta lasciandola intatta nella gerarchia. –

+0

@VitaliTchalov Sì, forse puoi impostare qui il suo attributo nascosto invece di bypassare la chiamata "addSubview". – MZD

0

Ecco una soluzione rapida che unisce le due risposte:

override func addSubview(view: UIView) { 
    super.addSubview(view) 
    if view.isKindOfClass(NSClassFromString("UITableViewCellEditControl")!) { 
     view.hidden = true 
    } 
} 
0

Ecco la versione Swift3:

override func addSubview(_ view: UIView) { 
    super.addSubview(view) 
    if view.classAsString() == "UITableViewCellEditControl" { 
     view.isHidden = true 
    } 
} 
+0

Valore di tipo UIView non ha una classe membroAsString – Joey

Problemi correlati