私はこれについて数時間苦労しています: NIB ファイルからロードされるカスタム UIView を作成したいです。これは私がしたことです:
1)「MyView」という名前のクラスと NIB ファイルを作成しました。
2)クラスをファイルの所有者カスタムクラスとして配置します。
3) NIB ファイルをロードするには、このコードが必要であることはわかっていますが、どこに配置すればよいかわかりません。「init」メソッドに入れました。
NSArray * nib = [[NSBundle mainBundle]
loadNibNamed: @"MyView"
owner: self
options: nil];
self = [nib objectAtIndex:0];
4) このカスタム ビューを使用する場合: IB を使用して、メインの ViewController に UIView を作成しました。カスタムクラスのビュープロパティに「MyView」を入れました。このビュー用に「myView」という IBOutlet を作成し、それを ViewController クラスに接続しました。
5) "init" を呼び出す必要があるのか、それとも NIB ファイルにあるために自動的に行われるのかがわかりません。私はそれらの両方を試しました。とにかく、「myView」クラス タイプは、MyView ではなく UIView として認識され、空のビューを表示しています。
私は何を間違っていますか?それを行う別の方法はありますか?
ありがとう、ニムロッド
編集:ここの回答に従ってコードを変更しました。ここでのすべての回答は、実際にはカスタム クラスを使用していませんでした。これが、ここでの全体的なアイデアです。これが私がやったことですが、testViewはTestViewではなくUIViewであると考えているため、アプリがクラッシュします。助けてください。
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,retain) TestView *testView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray* views=[[NSBundle mainBundle] loadNibNamed:@"TestView" owner:nil options:nil];
self.testView= [views objectAtIndex:0];
[self.view addSubview:self.testView];
[self.testView trace]; // calling a method from the custom class
}