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

时间:2012-12-26 15:35:40

标签: objective-c ios uiviewcontroller uiscrollview mapkit

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

我使用Storyboard编写代码,虽然我是一名经验丰富的开发人员,但这是我第一次使用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;
}

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

网站上有关于做stuff like this的其他答案,但没有一个提到滚动条的高度(以及代码的优雅。)

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在这种情况下,您可以单独使用UIView并在Exit之后放置它。将mapView放在UIView中并执行所需的enter image description here。还为tableView(myTableView)以及UIView(viewWithMapView)绘制一个插座。现在在viewDidLoad()中添加它: -

NaN

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