2011-12-11 66 views
0

我對iOS開發很陌生,需要一些建議。我有一個像應用程序聊天。用戶界面應該有一個用於向服務器發佈新消息的子視圖,以及用於在表視圖中查看消息的一個子視圖。iOS子視圖,SRP和自定義事件

我已經在Interface Builder中構建了兩個子視圖作爲XIB:s。但我不確定如何在主視圖控制器上使用這些。我可以使用IB將我的自定義視圖添加到設計圖面嗎?或者我需要以編程方式添加這些內容?

在這兩個子視圖之間發送消息或自定義事件的最佳方式是什麼?我希望讓它們儘可能分離。大多數情況下,我想在用戶登錄或註銷時發送一個事件,以便UI可以對這些更改作出反應。我還希望帶有消息的表視圖知道何時從寫視圖發佈新消息。

//約翰

回答

1

爲了得到你要加載它首先發送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 

這是關於如何使用.xibs爲您的自定義UIView子類。如果你的應用就像一個聊天,那麼你必須以編程方式添加它們。

至於在兩個自定義視圖之間發送消息的最佳方式,您必須在每個視圖中爲彼此創建一個弱引用。

在一個

@property (nonatomic, assign) CustomView *customView; 

在另一個

@property (nonatomic, assign) AnotherCustomView *anotherCustomView; 

,只是向他們發送消息時,有些人甚至會發生

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

讓我知道這是顯而易見的。

+0

謝謝。沒有解決這個問題,但它讓我開始了! –