2013-01-05 176 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

我认为您最初的代码应该是这样的:它被分配

希望它可以帮助你