2016-09-22 7 views
1

イメージがタップされたときにポップオーバーを追加しようとしていますが、それはモーダルで表示され続けます。この質問/トピックへのすべての答えはadaptivePresentationStyleForPresentationControllerを追加することを提案しますが、それは私のためには機能しません。私はiPhoneでこれをやろうとしています。ここに私のコードは次のとおりです。Popoverはモーダルでプレゼンテーションを続けます

class ParkingInfoTableViewController: UITableViewController, UIPopoverPresentationControllerDelegate { 
    ... 
    func presentPopover(sender:UITapGestureRecognizer) { 
    let storyboard : UIStoryboard = UIStoryboard(name: "Main",bundle: nil) 
    let infoViewController = storyboard.instantiateViewControllerWithIdentifier("ImagesInfoPopupViewController") 
    infoViewController.modalPresentationStyle = .Popover 
    infoViewController.preferredContentSize = CGSizeMake(150, 75) 

    let popoverPresentationViewController = infoViewController.popoverPresentationController 
    popoverPresentationViewController?.permittedArrowDirections = .Any 
    popoverPresentationController?.delegate = self 
    popoverPresentationViewController?.sourceView = sender.view 
    popoverPresentationViewController?.sourceRect = CGRect(
     x: sender.locationInView(sender.view).x, 
     y: sender.locationInView(sender.view).y, 
     width: 1, 
     height: 1) 

    self.presentViewController(infoViewController, animated: true, completion: nil) 

} 

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

画像とセルは次のとおりです。

 let cell = tableView.dequeueReusableCellWithIdentifier(AppConstants.moreInfoCellReusableIdentifier) as! MoreInfoTableViewCell 

     let tapped = UITapGestureRecognizer(target: self, action: #selector(presentPopover)) 
     tapped.numberOfTapsRequired = 1 
     cell.securityImage.addGestureRecognizer(tapped) 
     cell.securityImage.userInteractionEnabled = true 

     return cell 

答えて

0

も追加:

func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle{ 
    return .None 
} 
+0

まだ動作しません... –

3

を次のスウィフト3(Xcodeの8)ソリューション

のためであります

Swift 2.2(Xcode 7)からSwift 3(Xcode 8)に移行すると、この問題が発生しました。セグエの準備をしながら、私はprepare(for segue...)で、次のやった

public func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { 
    return .none 
} 

public func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { 
    return .none 
} 

let popover = segue.destination 
popover.popoverPresentationController?.delegate = self 
popover.modalPresentationStyle = .popover 

と仮定すると、あなたはポップオーバーコントローラのクラスを持っていること、で

UIPopoverPresentationControllerDelegateのために私は両方の下に実装しましたviewDidLoad()を複製することができます。

super.viewDidLoad() 
... 
self.preferredContentSize = CGSize(width: 123, height: 456) 

そして最後に、ストーリーボードで定義されている私のセグエは、次のように構成されています

  • 種類:ボタンバーの項目(実装ごとに異なります)
  • 道順:ポップオーバー
  • アンカーとして存在します:すべてデフォルトで選択されています
+1

はうまくいきます、ありがとうございます! –

関連する問題