2016-10-18 1 views
3

UIViewプロパティをUIViewControllerに割り当てることができるのだろうかと思います。 UIViewを接続することで、2番目のView Controllerに移行したいと考えています。私はドラッグしてコーディングして何度も試みましたが、失敗しました。私はseagueを使うようにプログラムする必要がない方法を探しています。UIViewをタップしてセグを実行する方法

この目標を達成するものはありますか?

おかげ

+1

「接続する」とはどういう意味ですか? –

+0

のように '.addSubview''? –

+0

だから私は、UIViewをクリックして2番目のビューコントローラに移行したいと思います。 @DavidSeek – bagels

答えて

3

UIViewをタップしてセグエを実行するには、ジェスチャー認識を追加する必要があります。私の例では、私はインスタンス化し、プログラムUIViewSubclassを追加しました:

viewDidLoad(){ 

    // here we instantiate an object of our subclass 
    let customView = MyViewSubclass(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 
    // here we add it to our ViewController 
    self.view.addSubview(customView) 

    // here we instantiate an object of gesture recognizer 
    let gestureRec = UITapGestureRecognizer(target: self, action: #selector (self.someAction (_:))) 
    // here we add it to our custom view 
    customView.addGestureRecognizer(gestureRec) 
} 

func someAction(sender:UITapGestureRecognizer){  
    performSegueWithIdentifier("Whazzzzup", sender: self) 
} 

// Swift 3 
func someAction(_ sender:UITapGestureRecognizer){ 

    // this is the function that lets us perform the segue 
    performSegue(withIdentifier: "Whazzzup", sender: self) 
} 

あなたがUIViewSubclassを持っていない場合、あなたはちょうどあなたがまたUIView ...

let customView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 

を追加することができますもちろん、あなたのUIViewアウトレットを取り出し、ジェスチャ認識装置を追加してください。セグエなしViewControllerを提示する

let gestureRec = UITapGestureRecognizer(target: self, action: #selector (self.someAction (_:))) 
myView.addGestureRecognizer(gestureRec) 

、あなたはViewControllerををインスタンス化する必要があります。

func someAction(_ sender:UITapGestureRecognizer){ 
    let controller = storyboard?.instantiateViewController(withIdentifier: "someViewController") 
    self.present(controller!, animated: true, completion: nil) 
    // swift 2 
    // self.presentViewController(controller, animated: true, completion: nil) 
} 

あなたはあなたののViewControllerの属性インスペクタでwithIdentifierを設定する必要があります。

enter image description here

この例ではwithIdentifierは、次のようになります。LandingVC

あなたがUINavigationControllerを使用してback Buttonを希望している場合は、ナビゲーションスタックにViewControllerを押す:

self.navigationController?.pushViewController(controller!, animated: true) 
+0

ありがとう!しかし、私はこれをうまく実装していないので、現在は機能していません。識別子はどこに設定する必要がありますか?私はUITableVIewControolerを準備し、識別子セクションに呼び出し名を添付しました。これは正しいです?そうでない場合、識別子は何を指していますか? – bagels

+0

いいえ、次にセグは表示されませんが、ビューコントローラーを押します。秒 –

+0

私の編集を参照してください。コントローラ用のストーリーボードIDを設定し、それを 'withIdentifier'として設定する必要があります –

5

ストーリーボードモードは、(少なくとも、今。)これをサポートしてタップをドラッグしますジェスチャー認識機能をクリックして表示します。次に、他のセグのトランジションと同様に、表示したいビューにジェスチャ認識機能を接続します。表示されているビューが「ユーザーインタラクションを有効にする」であることを確認してください。コードは不要です。 Apple Documentation

関連する問題