无法使用UITableViewCell内的MKMapView发送SubviewToBack

时间:2014-05-08 04:33:43

标签: ios objective-c uitableview mkmapview

在Xcode中,我创建了UITableView Dynamic Prototypes。第一个单元格由buttonlabelMKMapView组成。

在我的...cellForRowAtIndexPath:方法中,我使用以下代码:

UITableViewCell *header = [self getNewCell:@"entity_header"];

// Send map to back (put map behind everything else)
MKMapView *MapView = (MKMapView*)[header viewWithTag:2];
[tableView sendSubviewToBack:MapView];
// Also tried using `header` here. [header sendSubviewToBack:MapView];

// Set the image of the back button.
UIButton *backButton = (UIButton*)[header viewWithTag:1];
UIImage *backBtnImg = [UIImage imageNamed:@"images/backBtn.png"];
[backButton setImage:backBtnImg forState:UIControlStateNormal];
[tableView bringSubviewToFront:backButton];
// Also tried using `header` here. [header bringSubviewToFront:backButton];

我想将MKMapView发送到其他组件后面,但上面的代码无效。

注意:我在这里使用viewWithTag的原因是我不必为所有组件创建插座。 (在不使用更多实现文件的情况下从UITableViewCell内部创建出口非常棘手)

1 个答案:

答案 0 :(得分:3)

我认为您正在使用自定义单元格。所以问题可能出在这一行。 MKMapView *MapView = (MKMapView*)[header viewWithTag:2];而是试试这个。

MKMapView *MapView = (MKMapView*)[header.contentView viewWithTag:2];

他们也是这样。

[header.contentView sendSubviewToBack:MapView];

注意:如果所有内容的子视图的边界都小于MKMapView,则MKMapView始终显示在屏幕上。