2013-01-05 228 views
0

在我的應用程序中,我是一個視圖控制器,它調用幾個視圖。所有這些視圖都是UIViews。這工作正常,但不是在任何情況下。其中一個被調用的視圖有一些標籤,textfields和兩個UITextViews。一切都正確顯示,但UITextViews。該觀點被稱爲那樣:UITextView屏幕上未顯示

[[self view] addSubview:tasteView]; 
//tasteView = [[TasteView alloc] init]; 
[self setCurrentView:tasteView]; 

我調用視圖的init方法來顯示UITextViews:

編輯:菲利普·米爾斯的評論這是稍微改變了! Init不再被調用。

- (id)init 
{ 
    if (self) 
    { 
     [tv1 setNeedsDisplay]; 
     CGRect frame = tv1.frame; 
     frame.size.height += 1; 
     tv1.frame = frame; 
    } 
    return self; 
} 

當我看到setNeedsDisplay沒有效果,我改變了corresponsing幀的大小,以強制重繪。不幸的是,這也沒有效果。 順便說一句,該視圖最初裝在視圖控制器的viewDidLoad中:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self setCurrentView:placeholder]; 
    [self configureView]; 

    wineryView = [self loadWineryView]; 
    wineView = [self loadWineView]; 
    tasteView = [self loadTasteView]; 
} 

用於裝載觀點方法是這樣的:

- (UIView *) loadTasteView 
{ 
    NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"TasteView" owner:self options:nil]; 
    UIView *tView; 
    for (id view in nibViews) 
    { 
     if ([view isKindOfClass:[TasteView class]]) 
     { 
      tView = (TasteView*) view; 
     } 
    } 
    return tView; 
} 

我不知道爲什麼這些UITextViews不顯示。我忘了什麼嗎?要顯示真是應有盡有,這裏有我在InterfaceBuilder中所做的連接: enter image description here

enter image description here

有誰知道我做錯了什麼,可以幫助我嗎?

回答

0

如果您在代碼中創建視圖(第一個樣品),allocinit視圖前試圖將其添加爲一個子視圖。

如果您從另一個nib(最後的代碼部分)加載它,您仍然需要將其添加到視圖層次結構中。

+0

我加載FRIM筆尖通常認爲

tasteView = [[TasteView alloc] init]; [[self view] addSubview:tasteView]; [self setCurrentView:tasteView]; 

addSubView

。在代碼中創建視圖只是一個奇怪的「幫手」,因爲我想在某個時候調用setNeedsDisplay。我想我會通過調用addSubview將視圖添加到層​​次結構中。我必須以另一種方式做到這一點嗎? – usermho

+0

我不能評論你應該使用什麼方法,而不知道應用程序的結構,但我的第一點是,你不能添加子視圖,直到它存在,所以你寫了什麼'tasteView'包含作爲子視圖和**然後**創建一個不會被添加的新的。 –

+0

你是絕對正確的:通過調用alloc和init我創建了一個從未添加的新視圖!所以我在調用視圖後評論說它添加了代碼。不幸的是沒有效果。我將根據該更改編輯上述代碼! – usermho

0

我認爲您最初的代碼應該是這樣的:它被分配

希望它可以幫助你