0

如何在滚动的 TableView 上方创建一个具有固定 MapKit 的 ViewController?

我正在使用 Storyboards 进行编码,虽然我是一位经验丰富的开发人员,但这是我第一次使用 iOS、XCode 和 Objective-C。我目前有一种可行的方法,但是我当前使用的方法通过将 MapKit 设置为 UITableViewController 内的表视图的部分标题来工作,并且看起来不正确。(它之所以有效,是因为我只有一个部分,当我滚动表格视图时,MapKit 部分将始终是固定的。)

执行此操作的代码如下所示:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 200.0;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    MKMapView *mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 200)];
    return mapView;
}

不幸的是,这样做意味着滚动条出现在地图和表格视图旁边。相反,我希望滚动条与表格视图一样高。

网站上还有其他关于做这样的事情的答案,但没有一个提到滚动条的高度(以及代码的优雅性。)

有任何想法吗?

4

2 回答 2

0

您提供的链接正是您应该做的,但在 Xib 文件中还包括表视图上方的 MKMapView,并为此正确设置插座(并实现正确的委托协议)。滚动条只会与表格视图一样高,因为它是实际表格的子视图,并且通常这是在 UI 上接受的处理方式,除非您绝对想以编程方式完成所有操作。

于 2012-12-26T15:46:41.880 回答
0

在这种情况下,您可以使用单独的 UIView 并将其放在 Exit 之后。将您的 mapView 放入该 UIView 并执行所需的在此处输入图像描述. 还要为您的 tableView(myTableView) 和 UIView(viewWithMapView) 绘制一个出口。现在将其添加到您的 viewDidLoad() 中:-

 [_myTableView setTableHeaderView:_viewWithMapView];

这会将您的 mapView 添加为 tableView 标题而不是剖面视图标题。

于 2016-08-06T11:37:57.543 回答