从UITableView切换时清空MKMapView

时间:2011-05-16 07:59:13

标签: iphone objective-c

我在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时看到为什么我没有看到地图吗?

1 个答案:

答案 0 :(得分:1)

你应该给它一个大小和位置     CGSize size = self.view.frame.size;
    self.mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0,0,size.width,size.height)];

要检查控制台中的尺寸,请在toogleview方法中添加以下行:
    NSLog(@“%@”,self.mapView);