おそらく初心者の質問でごめんなさい、みんな。私はiOS開発に不慣れです。
XIBで定義されているViewControllerを作成するにはどうすればよいですか?
XcodeのUIViewController
から「NewFile」を介して継承した新しいクラスを作成し、with XIB
チェックボックスをオンにすると、viewController
要素を持たないxibファイルが作成されます。むしろ、定義されているplaceholder
を指すUIViewController
がありますコード内。
しかし、Interface Builderでコントローラー自体を作成し、customClassを指定できることがわかりました。
残念ながら、それは私にはうまくいきません。実行時にloaded the "EmbeddedViewController" nib but the view outlet was not set
エラーが発生します。しかし、すべてがXIBを介して定義されているため、view
プロパティはリソースローダーによって自動的に設定される必要があると思いました。たとえば、TableViewとそのセルに対してそのように機能します。
それを行う方法の例を教えてください。
サンプルプロジェクトを作成しました: https://github.com/cppexpert/SampleWithNib
問題のコントローラーはEmbeddedViewController
これらのコントロールは、ストーリーボードプロジェクトのIBに存在することが判明しました。
UIViewControllerごとに1つのXibを作成します
各Xibには、UIViewControllerクラスを設定するためのファイルのOwnerオブジェクトがあります。 [ファイルの所有者]をクリックして、そのクラスで[EmbeddedViewController]を選択します
次に、UIViewControllerクラスではなくメインUIViewをそこにドラッグし、ファイルの所有者をビューとしてこのビューを接続します。 UIViewControllerは、StoryBoardベースプロジェクトにドラッグするために使用するだけです。
https://github.com/lequysang/gitfiles02/blob/master/SampleWithNib-master.Zip
「新しいファイル」を介してxibを使用してViewControllerを作成すると、XcodeはUIView
を生成し、それをview
アウトレットに自動的に接続します。 Xcodeがxibファイルを生成した後に何かを変更したようです。その場合、ビューをview
アウトレットに手動で接続する必要があります。
Xib.setで新しいビューを作成する場合は、ファイル所有者をカスタムクラスに設定します。または、単にビューを作成したい場合。次に
NSArray* test1 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.myViewFromNib = [test1 objectAtIndex:0];
MyViewFromNibはビューオブジェクトであり、「View」はペン先名です。