2013-05-05 123 views
3

我試過這個類負載的UIView

https://github.com/autresphere/ASDepthModal

我希望它彈出喜歡它,但我希望能夠以編程方式設置的標籤,因爲我需要給根據當天的情況而改變。 我使用故事板,所以我創建了一個.xib和uiview.h和uiview.m。在我的主要的UIViewController我有:

xibContents = [[NSBundle mainBundle] loadNibNamed:@".xib" owner:self options:nil]; 
testView = [xibContents lastObject]; 

在我的.xib我有文件所有者設置爲我的UIView類,這創造了一個問題:NSUnknownKeyException 當我在我的.xib內uiiew設置爲我的UIView類的應用程序將加載,我可以打開它就像它應該,但我不能以編程方式更改標籤的狀態?我完成了輸在這裏!

回答

2

其實得到這個工作。我採取了錯誤的做法。我發現只需創建視圖並在按鈕被點擊時用背景圖片和標籤填充視圖就簡單多了。在用戶界面設計師中做到這一點很簡單,但事實並非如此。

感謝幫助我的人:)

1

文件的所有者應該是視圖控制器,而不是視圖本身。視圖可以有標籤的出口。該視圖應設置爲您的筆尖中的自定義類。

3

通常來說,UIViews無法訪問IBOutlets。蘋果種類的預期xib只能分配給UIViewControllers。

但是,您可以通過兩種方式加載從廈門國際銀行視圖:

1)創建一個額外的廈門國際銀行在UIViewController使用。將文件的所有者設置爲您的視圖控制器,並將視圖的類名稱設置爲您的自定義視圖類。在界面生成器中,這是在「自定義類」下。您可以將視圖設置爲IBOutlet,並且當您的UIViewController加載xib並將其自己設置爲所有者時(如您在上面嘗試,但僅在控制器類中嘗試),iOS將創建您的自定義類的實例

2)加載廈門國際銀行在UIView類,並設置自我生成的對象:

- (id)init { 
    self = [super initWithFrame:CGRectMake(0, 0, 1024, 352)]; 

    if (self) { 
     NSArray* nib = [[NSBundle mainBundle] loadNibNamed:@"TCSNumberKeyPad" owner:self options:nil]; 
     [[nib objectAtIndex:0] setFrame:CGRectMake(0, 0, 1024, 352)]; 
     self = [nib objectAtIndex:0]; 
    } 

    return self; 
} 

在這兩種情況下,你需要通過代碼來檢索您的標籤,而不是IBOutlet中的屬性。您可以在子視圖屬性找到標籤:

UILabel* myLabel = [self.subviews objectAtIndex:0];

+0

我不明白如何實現這個? 我有一個ViewController界面生成器在我的主要故事板。 我有一個UIView類應該控制我的2 .xib的? 一個.xib是主屏幕,另一個是xib來控制我的標籤? – 4FunAndProfit 2013-05-08 17:26:09