2013-02-11 17 views
5

Ich habe eine UITableView mit UITableViewCells, die eine MKMapView enthält.MKMapView in einem UITableViewCell

Das Problem: Wenn die Tabelle Zelle jemals ausgewählt wird, dann verschieben Sie die Karte, Sie sehen, die Mapview ist alles weiß und Sie sehen nur die "Legal" -Label.

Hat das jemand schon einmal erlebt?

screenshot

Hier ist der gesamte Code:

@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; 
} 

Antwort

4

ich das erlebt habe.

In meinem Fall wird die Map so weiß, wenn ihre TableView oder Zelle eine backgroundColor hat und ihre Zelle entweder einen grauen oder blauen Auswahlstil hat und die Zelle über die Warteschlange wieder in die Warteschlange gestellt wird.

denke ich, dass die Karte wird so nicht weiß machen, wenn

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
+1

Ich habe schon versucht, kann bestätigen, dass das Problem nicht löst. – vgr

+2

Ah, ok, was die weiße Karte in meinem Fall verursacht hat, war das Setzen von self.tableView.backgroundColor in viewWillAppear. Die Hintergrundfarbe von tableView in viewDidLoad verursacht das Problem nicht. Die Auswahl der Zelle spielt keine Rolle. – Eric

+0

Wenn dies hilft, wenn Sie eine Nib für die UITableViewCell verwenden, dann ist es möglich, dass die nib den selectionStyle auf etwas anderes gesetzt hat, als programmatisch eingestellt ist. Die nib wurde möglicherweise nicht geladen, wenn cellForRowAtIndexPath aufgerufen wird (wobei cell.selectionStyle programmgesteuert festgelegt ist). Anschließend wird der Auswahlstil auf den Wert in der nib zurückgesetzt. – Duncan

0

ich das auch erlebt haben.

Meine Karte hatte einen weißen Hintergrund, als sie berührt wurde, nachdem ein weiterer Detailansicht-Controller gedrückt/gedrückt wurde. TableView hat noch keine Farbe/Hintergrund konfiguriert, alles ist Standard.

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

... tatsächlich geholfen.