web-dev-qa-db-ja.com

XIBで定義されているViewControllerを作成するにはどうすればよいですか?

おそらく初心者の質問でごめんなさい、みんな。私は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

15
expert

これらのコントロールは、ストーリーボードプロジェクトのIBに存在することが判明しました。

5
expert

UIViewControllerごとに1つのXibを作成します

各Xibには、UIViewControllerクラスを設定するためのファイルのOwnerオブジェクトがあります。 [ファイルの所有者]をクリックして、そのクラスで[EmbeddedViewController]を選択します

次に、UIViewControllerクラスではなくメインUIViewをそこにドラッグし、ファイルの所有者をビューとしてこのビューを接続します。 UIViewControllerは、StoryBoardベースプロジェクトにドラッグするために使用するだけです。

https://github.com/lequysang/gitfiles02/blob/master/SampleWithNib-master.Zip

7
LE SANG

「新しいファイル」を介してxibを使用してViewControllerを作成すると、XcodeはUIViewを生成し、それをviewアウトレットに自動的に接続します。 Xcodeがxibファイルを生成した後に何かを変更したようです。その場合、ビューをviewアウトレットに手動で接続する必要があります。

2
cahn

Xib.setで新しいビューを作成する場合は、ファイル所有者をカスタムクラスに設定します。または、単にビューを作成したい場合。次に

NSArray* test1 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
self.myViewFromNib = [test1 objectAtIndex:0];

MyViewFromNibはビューオブジェクトであり、「View」はペン先名です。

0
Subrat