我在UINavigationController中有一个UITableView,它包含一个rightBarButtonItem,它应该隐藏UITableView并显示一个MKMapView。按钮似乎工作得很好:它隐藏了UITableView,并显示了MKMapView。但是,这个MKMapView是空的。如同,完全是白色的。我试图使用UILabel(仅用于测试目的),但也没有出现,所以当我将MKMapView(和UILabel)添加到视图层次结构时,问题必定发生。一些相关的代码:
- (void)viewDidLoad {
[super viewDidLoad];
self.mapView = [[MKMapView alloc] init];
mapView.hidden = YES;
[self.view addSubview:self.mapView];
// Some other stuff, table set up, etc.
}
这是继承自UITableViewController的类的viewDidLoad。现在,我使用以下方法在UINavigationController的rightBarButtonItem上调用时调用:
- (void) toggleView {
if (self.mapView.isHidden) {
self.mapView.hidden = NO;
self.tableView.hidden = YES;
self.viewButton.title = @"List";
}
else {
self.mapView.hidden = YES;
self.tableView.hidden = NO;
self.viewButton.title = @"Map";
}
}
我确定函数被调用,我已经使用NSLog进行了检查。此外,UITableView正确消失,并且,我认为,MKMapView(或任何其他UIView对象)出现,但是是空的/完全白色。有人在试图切换到Map View时看到为什么我没有看到地图吗?
答案 0 :(得分:1)
你应该给它一个大小和位置
CGSize size = self.view.frame.size;
self.mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0,0,size.width,size.height)];
要检查控制台中的尺寸,请在toogleview方法中添加以下行:
NSLog(@“%@”,self.mapView);