Swift - 更改tableView

时间:2015-09-08 00:55:22

标签: swift height mapkit tableview android-mapview

(看看## Edit ##) 我是初学者。我使用谷歌但无法找到解决我问题的方法。

如何在tableView中更改MapView的高度?

我的故事板看起来像: click here I cant post pictures

我可以改变我想要的MKMapView的大小但是没有改变"在真实/模拟器中#34;。

我尝试用以下方法更改单元格的大小:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

    if(indexPath.row == 0) {
         return 500
    }

    return 75.0
}

但是indexPath.row = 0是第一个条目"名称:Test"

有人可以解释为什么我不能改变大小?如何更改尺寸?

感谢您的帮助。

修改

我尝试了两个不同的单元格(" Map Cell"" listAllBakeries")现在它可用于大小。

当我点击一个条目时,地图单元格"" Map Cell"但是在" listAllBakeries"。 More than one Map

代码:

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    //CODE TO BE RUN ON CELL TOUCH

    //get the Location with latitude and longitude
    var location = CLLocationCoordinate2D(latitude: latitude[indexPath.item], longitude: longitude[indexPath.item])

    //resolution
    var span = MKCoordinateSpanMake(0.003, 0.003)
    var region = MKCoordinateRegion(center: location,span:span)


    //here is the mistake
    let cell2:ListPlacesTableViewCell = tableView.dequeueReusableCellWithIdentifier("MapCell", forIndexPath: indexPath) as! ListPlacesTableViewCell

    //some Text about the Place
    var annotation = MKPointAnnotation() 
    annotation.coordinate = location
    annotation.title = namesBakeries[indexPath.item]
    annotation.subtitle = "some Text"

    //Zooming inside the map
    cell2.Map.setRegion(region, animated: true)
    cell2.Map.addAnnotation(annotation)

}

我真的不明白这一点。我使用正确的标识符(MapCell),但部分/行是错误的。我该如何使用正确的部分?

以下是我填写行/部分的代码

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    if(indexPath.section == 0) {
        let cell2:ListPlacesTableViewCell = tableView.dequeueReusableCellWithIdentifier("MapCell", forIndexPath: indexPath) as! ListPlacesTableViewCell

        //insert MapStuff
        //addAnnotations
       //MapStuff


        return cell2

    } else {
        //Standard-Labels with text
        let cell:ListPlacesTableViewCell = tableView.dequeueReusableCellWithIdentifier("listAllBakeries", forIndexPath: indexPath) as! ListPlacesTableViewCell
        cell.nameLabel?.text = namesBakeries[indexPath.row]
        cell.adressLabel?.text = "Test 2"
          return cell
    }    
}

感谢您的帮助

(我很抱歉我的英语,但这不是我的母语)。

2 个答案:

答案 0 :(得分:0)

看起来您的地图位于uiTableView上方,而不是表格中的单独原型单元格。

使用2个原型单元格设置uiTableView,然后将地图放在第一个。

然后,正如您所做的那样,您可以测试indexpath.row的值。

答案 1 :(得分:0)

好的,我发现了。

诀窍是始终更新相同的单元格。 我定义了一个数组。然后将我的Cell2保存在此数组中,并使用此Object更新我的地图。 (我的英语很糟糕,我知道,也许我的代码会提供更多信息。)

def info(self, event):
    self.win = win = tk.Toplevel(self)
    texto_info='''b is basis of rectangle
                (a) will be (l) if (b) is lowest side
                or (h) if (b) is the highest side of
                the rectangle'''
    tk.Label(win, text= texto_info).pack()
    x= win.winfo_pointerx()+100
    y= win.winfo_pointery()
    win.geometry('+%d+%d'%(x,y))
    win.overrideredirect(1)


def info_close(self, event):
    self.win.destroy()

感谢您的帮助