2011-12-11 10 views
0

私はiOS開発の初心者です。アドバイスが必要です。私はアプリのようなチャットをしています。 UIには、新しいメッセージをサーバーにポストするための子ビューと、テーブルビューでメッセージを表示するための子ビューが必要です。iOSチャイルドビュー、SRP、およびカスタムイベント

Interface Builderで両方の子ビューをXIBとしてビルドしました。しかし、私はどのようにメインビューコントローラでこれらを使用するか分からない。 IBを使用してカスタムビューをデザイン面に追加できますか?またはこれらをプログラムで追加する必要がありますか?

これらの2つの子ビューの間でメッセージまたはカスタムイベントを送信する最良の方法は何ですか?私はそれらを可能な限り切り離しておきたいと思います。ほとんどの場合、ユーザーのログオンまたはログオフ時にイベントを送信して、UIがこれらの変更に反応できるようにしたいと考えています。また、書き込みビューから新しいメッセージがいつ投稿されるかを知るためのメッセージ付きのテーブルビューが必要です。

//ヨハン

答えて

1

あなたが最初のNSBundleクラスにloadNibNamed:owner:options:メッセージを送信し、それをロードするために持っているXIBファイルの内容を取得するために。

CustomViewとCustomView.xibという名前のUIViewサブクラスがあるとします。 xibファイルには、各ビューにタグがあります。 .hファイルは次のようになります。

@interface CustomView : UIView 

@property (nonatomic, assign) UILabel *someTextLabel; //use assign in order to not to override dealloc method 

@end 

.m 
@implementation CustomView 

- (id)init { 
    self = [super init]; 
    if (self) { 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:nil options:nil]; 
    [self addSubview:[topLevelObjects objectAtIndex:0]]; //this object is a CustomView.xib view 
    self.someTextLabel = (UILabel *)[self viewWithTag:5]; //consider you have a UILabel on CustomView.xib that has its tag set to 5 
    } 
    return self; 
} 

@end 

これは、カスタムUIViewサブクラスの.xibsの使用方法です。あなたのアプリがチャットのようなものなら、プログラムで追加する必要があります。

2つのカスタムビュー間でメッセージを送信する最善の方法として、それぞれのビューで相互に弱い参照を作成する必要があります。別の

@property (nonatomic, assign) AnotherCustomView *anotherCustomView; 

で1

@property (nonatomic, assign) CustomView *customView; 

といくつかのも

- (void)buttonPressed { 
    [customView handleButtonPressedEvent]; 
} 

を発生したときだけ、これがクリアされている場合、私に教えてください彼らにメッセージを送信します。

+0

ありがとうございました。そんなに解決しなかったのですが、それが私を始めました! –

関連する問題