別のViewControllerにscrollviewにviewcontroller'sフレームを追加することはできません:https://www.youtube.com/watch?v=3jAlg5BnYUU は、チュートリアルのソースコードはここにある:https://www.veasoftware.com/posts/swipe-navigation-in-swift-xcode-7-ios-9-tutorialが、私はこのチュートリアルのようviewcontrollersの間に私のアプリとスワイプにスワイプ機能を追加したい
このガイドでは、nib/xib
ファイルを使用して、ViewControllerのコンストラクタで呼び出すために使用する対応するViewControllerとともに作成します。
私はまったく同じことをしており、チュートリアルのようにウォークリングしています。しかし、私はまた、xib
ファイルを持っていないViewControllerを私のストーリーボード上に使いたいと思っています。そのviewcontrollerは私のコードではViewController2
と呼ばれています。それはスワイプ時にスクロールビューに表示されない唯一のものです。他の2つはコンストラクタ呼び出しでxibName
を呼び出すためですが、私のストーリーボード上にあるため、ViewController2にはxib
というファイルがありません。
スワイプビューに追加してスワイプ時に表示するにはどうすればよいですか?
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
let vc0 = ViewController0(nibName: "ViewController0", bundle: nil)
self.addChildViewController(vc0)
self.scrollView.addSubview(vc0.view)
vc0.didMoveToParentViewController(self)
let vc1 = ViewController1(nibName: "ViewController1", bundle: nil)
var frame1 = vc1.view.frame
frame1.origin.x = self.view.frame.size.width
vc1.view.frame = frame1
self.addChildViewController(vc1)
self.scrollView.addSubview(vc1.view)
vc1.didMoveToParentViewController(self)
let vc2 = ViewController2()
var frame2 = vc2.view.frame
frame2.origin.x = self.view.frame.size.width
vc2.view.frame = frame2
self.addChildViewController(vc2)
self.scrollView.addSubview(vc2.view)
vc2.didMoveToParentViewController(self)
self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height - 66);
}
ありがとうございます!これは、 'ViewController2'のビューのフレームサイズが、他のViewControllerのフレームサイズ(' ViewController0.view.frame'と 'ViewController1.view.frame')の半分であったことを除いて、機能しました。私は 'frame2.size.width = frame1.width'を設定することでそれを解決しました。他のフレームサイズのフレームサイズの50%がデフォルトの理由は何ですか? – Rox
@Roxの場合、MainController2ファイルのMain.storyboardファイルに** Resize View From NIB **のチェックが入っている可能性があります(これがデフォルトだと思います)。確認するにはMain.storyboardファイルに移動し、 'ViewController2'を選択し、属性インスペクタに行き、View Controller - > Layoutセクションの下で** NIB **からResize Viewをクリックします。この質問に示されている通り:http://stackoverflow.com/questions/14520561/wrong-frame-value-while-accessing-the-view-from-storyboard-in-ios – Ike10
ああ!そうだった!ありがとうございました! :-) – Rox