使用坐标

时间:2017-01-11 13:18:54

标签: ios user-interface swift3 uilabel cllocationmanager

我正在尝试在master-detail app的详细视图中显示两个标签。我希望第一个标签显示“餐馆名称”,第二个标签显示“用户当前位置”。我已成功实现`locationManager',并在控制台中获得正确的当前用户坐标。但是,我想在标签的文本中显示坐标。我假设以下代码为什么第二个标签在接收坐标之前设置的问题。实施它最好的是什么?

func configureView() {

//to display label with restaurant name
    if let restaurant = self.restaurant {
        if let label = self.restaurantNameLabel {
            label.text = restaurant.RestaurantName
        }
    }

 //to display label with user's Latitude and Longitude:

    if let label = self.CurrentLocation {
        label.text = "\(currentLocation?.longitude)"
    }  
}

我也有didSet方法:

var restaurant: Restaurant? {
    didSet {
        self.configureView()
     }
}

var currentLocation: Coordinate? {
    didSet {
        self.configureView()
    }
}

1 个答案:

答案 0 :(得分:0)

首先,我建议将RestaurantName类中的Restaurant属性重命名为name,将UILabel CurrentLocation重命名为currentLocationLabel。其次,在其各自的didSet块中配置属性的相应标签会更简单。另外,我使用了flatMap - 在currentLocation的情况下,如果为nil,则返回nil - 否则,currentLocation将被闭包操作并返回。

var restaurant: Restaurant? {
    didSet {
        restaurantNameLabel?.text = restaurant.flatMap { $0.name }
    }
}

var currentLocation: Coordinate? {
    didSet {
        currentLocationLabel?.text = currentLocation.flatMap { "\($0.latitude), \($0.longitude)" }
    }
}