2016-04-29 4 views
0

私はSwiftでカスタムアラートビューコントローラを開発しようとしています。私はAlertViewControllerのために私のストーリーボードにUIViewControllerを作った。次に、私はそれを表示する必要があるとき、私は次のことを行います:元のビューと同じ大きさのサブビューを元のビューに追加し、不透明な背景を作成します。そのビューに2番目のサブビューを追加してAlertViewController.viewを表示します。以下は、AlertViewを表示するために使用するコードです。UIViewをプログラムで追加してUIViewControllerに接続しないのはなぜですか?

let vc = self.storyboard!.instantiateViewControllerWithIdentifier("topicAlertView") as! EditTopicAlertViewController 
let alertView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)) 

alertView.backgroundColor = UIColor(colorLiteralRed: 23/255.0, green: 62/255.0, blue: 67/255.0, alpha: 0.75) 

let alertBox = UIView(frame: CGRect(x: alertView.bounds.size.width/2.0 - 150.0, y: alertView.bounds.size.height/2.0 - 100.0, width: 300, height: 200)) 


alertBox.addSubview(vc.view) 
alertView.addSubview(alertBox) 

これは正常に動作し、アラートビューが正しく表示されます。ただし、UIViewControllerに「EditTopicAlertViewController」と全く接続されていないようです。たとえば、私は、それに接続されたアクションで、それがすべてで呼び出されていないというボタンをキャンセルしている、またvc.cancelButtonはnilを返すので、私は

vc.cancelButton.addTarget(self, action: #selector(EditTopicAlertViewController.cancelPressed(_:)), forControlEvents: .TouchUpInside) 

を追加することができます。

私はこれをどのように修正することができますか考えている場合は、私に知らせることができれば本当に感謝します!前もって感謝します。私は、ビューを追加すると

+1

「UIViewController」のドキュメントの「コンテナビューコントローラの実装」をお読みください。 – rmaddy

答えて

2

私はまた次のように、ViewControllerを自分自身を追加する必要があります。そして、

self.addChildViewController(vc) 

、私は「followingPressed」メソッドに次の行を追加し、それを削除したいとき:

self.removeFromParentViewController() 
+2

よくできました。あなたは自分で答えを見つけました。 (投票しました。)rmaddyさんのコメントは役に立ちましたか? –

関連する問題