小编Ali*_*i_C的帖子

使用 swift 以编程方式在图钉顶部带有图像和文本的 iOS MapKit 自定义标注

我正在尝试在地图中的图钉顶部显示自定义呼叫。我需要在图钉顶部显示带有一些文字的图像作为我的呼唤。我编写的代码产生以下输出。

在此处输入图片说明

但是,我想要的输出如下所示:

在此处输入图片说明

我怎样才能达到我想要的输出?请注意,气泡是必须使用的图像资产,我知道如何使用 CAShapeLayer 绘制气泡,但这并不能完成我想要的。这是到目前为止的代码。

// methods for Custom annotations

    func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

        let annotationView = MKAnnotationView(annotation: pin, reuseIdentifier: "UserLocation")
        annotationView.image = UIImage(named: "marker")
        annotationView.canShowCallout = true
        configureDetailView(annotationView: annotationView)

        return annotationView

    }


    func configureDetailView(annotationView: MKAnnotationView) {
        let width = 300
        let height = 200

        let calloutView = UIView()
        calloutView.translatesAutoresizingMaskIntoConstraints = false

        let views = ["calloutView": calloutView]

        calloutView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:[calloutView(300)]", options: [], metrics: nil, views: views))
        calloutView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:[calloutView(200)]", options: [], metrics: nil, views: views))


        let …
Run Code Online (Sandbox Code Playgroud)

mapkit ios mapkitannotation swift

5
推荐指数
0
解决办法
1277
查看次数

在 Swift 中通过 segue 将点击的单元格数据传递到另一个视图

我有一个 tableView,我试图通过 segue 将与点击单元格相关的数据发送到另一个视图。我的代码仅在第二次点击后才起作用,并且在第一次点击时始终返回 nil 。我想由于某种原因,prepareForSegue 首先被执行,这就是为什么在第一次点击时,detailToSend 总是为零,而在第二次点击时,我从前一个点击的单元格中获取数据。我怎样才能解决这个问题 ? 更新:

var detailToSend = SingleRepository()

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if filteredResult.count > 0 {
        detailToSend = filteredResult[indexPath.row]
    } else {
        detailToSend = finalArrayUnwrapped[indexPath.row]
    }
    performSegue(withIdentifier: "showDetailSegue", sender: nil)
}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetailSegue" {
        let vc = segue.destination as! DetailViewController
        vc.detail = detailToSend
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 DetailViewController

class DetailViewController: UIViewController {


@IBOutlet weak var detailLabel: UILabel!

var detail: SingleRepository? …
Run Code Online (Sandbox Code Playgroud)

ios swift

3
推荐指数
1
解决办法
4073
查看次数

避免在Swift中的排序闭包内强制解包

我试图基于一个可选的Int属性对一个对象数组进行排序.

// sorting each language array based on most stars
groupedDictionariesValueUnwrapped.sort(by: { $0.stars! > $1.stars!  })
Run Code Online (Sandbox Code Playgroud)

数组的类型是[SingleRepository],SingleRepository有一个可选的Int.明星:国际?

我应该如何避免在排序中强行展开?

swift

3
推荐指数
1
解决办法
173
查看次数

为什么网络状态无法快速更新?

我正在使用iOS 12中引入的新“网络”库,但无法弄清楚为什么用户连接后网络状态没有更新为.satisfied。

这是到目前为止的代码:

import Network

class MapViewController: UIViewController {

    let networkMonitor = NWPathMonitor()
    let queue = DispatchQueue(label: "NetworkMonitor")

    override func viewDidLoad() {
        super.viewDidLoad()

        // check for internet connection
        networkMonitor.pathUpdateHandler = { path in
            if path.status != .satisfied {

                // alert the user to check internet connection
                let alert = UIAlertController(title: "Internet Error", message: "Unable to connect. Please check your internet connection.", preferredStyle: .alert)
                alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))
                alert.addAction(UIAlertAction(title: "Retry", style: .default, handler: { (action) in
                    // TODO: after …
Run Code Online (Sandbox Code Playgroud)

ios swift network-framework

0
推荐指数
1
解决办法
142
查看次数

标签 统计

swift ×4

ios ×3

mapkit ×1

mapkitannotation ×1

network-framework ×1