0

私は iOS 開発が初めてで、アドバイスが必要です。チャットのようなアプリがあります。UI には、新しいメッセージをサーバーに投稿するための子ビューと、テーブル ビューでメッセージを表示するための 1 つの子ビューが必要です。

Interface Builder で両方の子ビューを XIB:s として作成しました。しかし、メインのView Controllerでこれらを使用する方法がわかりません。IB を使用してカスタム ビューをデザイン サーフェイスに追加できますか? または、これらをプログラムで追加する必要がありますか?

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

//ヨハン

4

1 に答える 1

1

xibファイルの内容を取得するには、最初にファイルをロードしてloadNibNamed:owner:options:、NSBundleクラスにメッセージを送信する必要があります。

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つのカスタムビュー間でメッセージを送信する最良の方法については、それぞれで相互に弱参照を作成する必要があります。

1つに

@property (nonatomic, assign) CustomView *customView;

別の

@property (nonatomic, assign) AnotherCustomView *anotherCustomView;

何かが起こったときにメッセージを送るだけです

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

これが明らかかどうか教えてください。

于 2011-12-11T11:18:20.557 に答える