在我的应用程序中,我可以调用多个视图的视图控制器。所有这些观点都是UIViews。这很好,但不是在所有情况下。其中一个被调用的视图有一些标签,文本字段和两个UITextViews。一切都正确显示,但UITextViews。视图以这种方式调用:
[[self view] addSubview:tasteView];
//tasteView = [[TasteView alloc] init];
[self setCurrentView:tasteView];
我调用视图的init方法来显示UITextViews:
编辑:在Phillip Mills的评论之后,这有点变化了!不再调用Init。- (id)init
{
if (self)
{
[tv1 setNeedsDisplay];
CGRect frame = tv1.frame;
frame.size.height += 1;
tv1.frame = frame;
}
return self;
}
当我看到setNeedsDisplay没有效果时,我改变了相应框架的大小以强制重绘。不幸的是,这也没有效果。 顺便说一下,视图最初是在视图控制器的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中建立的连接:
有谁知道我做错了什么可以帮助我?
答案 0 :(得分:0)
如果您要在代码中创建视图(您的第一个示例),alloc
和init
视图之前尝试将其添加为子视图。
如果您从另一个笔尖(最后一个代码部分)加载它,您仍然需要将它添加到视图层次结构中。
答案 1 :(得分:0)
我认为您的初始代码应该是这样的:
tasteView = [[TasteView alloc] init];
[[self view] addSubview:tasteView];
[self setCurrentView:tasteView];
分配后 addSubView
希望它可以帮到你