2013-02-11 18 views
5

Ho un UITableView con UITableViewCells che contiene un MKMapView.MKMapView all'interno di UITableViewCell

Il problema: se viene selezionata la cella della tabella, quindi spostare la mappa, si vede la mapview è tutto bianco e si vede solo l'etichetta "Legal".

Qualcuno ha provato questo prima?

screenshot

Ecco l'intero codice:

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.table.backgroundColor = [UIColor clearColor]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return 5; 
} 

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return 70; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    MKMapView *map = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, 220, 70)]; 

    MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01); 
    CLLocationCoordinate2D logCord = CLLocationCoordinate2DMake(47.606, -122.332); 
    MKCoordinateRegion region = MKCoordinateRegionMake(logCord, span); 
    [map setRegion:region animated:NO]; 

    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"aaaa"]; 
    [cell.contentView addSubview:map]; 

    return cell; 
} 

risposta

4

ho sperimentato questo.

Nel mio caso, la mappa diventa bianca come questa se la sua tabellaView o cella ha un backgroundColor e la sua cella ha uno stile di selezione grigio o blu e la cella viene riciclata tramite dequeue.

Penso che la mappa non diventerà bianco come questo se

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
+1

Ho già provato, posso confermare che non risolve il problema. – vgr

+2

Ah, ok, in realtà ciò che stava causando la mappa bianca nel mio caso era l'impostazione di self.tableView.backgroundColor in viewWillAppear. Impostazione del background di tableViewColor in viewDidLoad non produce il problema. Lo stile di selezione della cella non ha importanza. – Eric

+0

Nel caso in cui questo aiuti qualcuno, se si utilizza un pennino per UITableViewCell, allora è possibile che il pennino abbia il setStyle impostato su qualcosa di diverso da quello impostato in modo programmatico. Il pennino potrebbe non essere stato caricato quando viene chiamato cellForRowAtIndexPath (dove cella.selectionStyle è impostato a livello di codice) e quindi lo stile di selezione viene reimpostato sul valore nel pennino. – Duncan

0

ho sperimentato questo.

La mia mappa aveva uno sfondo bianco quando è stata toccata dopo aver premuto/scoppiato un altro controller della vista di dettaglio. TableView non ha ancora configurato il colore/lo sfondo, tutto è predefinito.

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

... effettivamente aiutato.