2

私のアプリは、いくつかのピン ポイントを含むマップを表示します。ピンの 1 つがタッチされたときに、吹き出しの吹き出し内にテーブルビューを視覚化したいと思います。ここで似たようなものを見つけましたが、それはObjective-Cにあり(純粋なSwiftアプローチが必要です)、カスタムビューの自動レイアウトを無効にする必要があります(これは避けたいです)。

ここに画像の説明を入力

このソリューションを実装するにはどうすればよいですか、またはそれを行うライブラリをどこで見つけることができますか?

4

1 に答える 1

2

1 つの方法を次に示します。

メイン コントローラーに を実装さUIPopoverPresentationControllerDelegateせ、そのメソッドをオーバーライドします。

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return .None
}

viewDidLoad() でタップ ジェスチャ認識エンジンをセットアップします。

let tapGesture = UITapGestureRecognizer(target: self, action: Selector("tappedOnMap:"))
yourView.userInteractionEnabled = true
yourView.numberOfTapsRequired = 1
yourView.addGestureRecognizer(tapGesture)

ポップオーバーを開くには、「tappedOnMap」を定義します。

func tappedOnMap(sender: UITapGestureRecognizer) {
    let location = sender.locationInView(self.view)
    let storyboard = UIStoryboard(name: "Main", bundle: nil)        
    let vc = storyboard.instantiateViewControllerWithIdentifier("tableViewControllerClass") as! tableViewControllerClass
    vc.modalPresentationStyle = .Popover
    vc.preferredContentSize = CGSizeMake(200, 150)

    if let popoverController = vc.popoverPresentationController {
        // Create popover at tapped point.
        popoverController.delegate = self
        popoverController.sourceRect = CGRectMake(location.x, location.y, 20, 10)
        popoverController.sourceView = self.view
        self.presentViewController(vc, animated: true, completion: nil)
    }
}

「tableViewControllerClass」を定義してテーブル ビューを表示し、ストーリーボードのシーンにアタッチします。それが役立つことを願っています。

于 2016-01-03T20:57:19.403 に答える