0

在我的应用程序中,我拥有一个调用多个视图的视图控制器。所有这些视图都是 UIView。这工作正常,但并非在所有情况下。被调用的视图之一有一些标签、文本字段和两个 UITextView。一切都正确显示,但 UITextViews。视图以这种方式调用:

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

我调用视图的 init 方法来显示 UITextViews:

编辑:菲利普米尔斯发表评论后,这略有改变!不再调用初始化。

- (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 中建立的连接: 在此处输入图像描述

在此处输入图像描述

有谁知道我做错了什么并且可以帮助我?

4

2 回答 2

0

如果您在代码中创建视图(您的第一个示例),alloc以及在尝试将其添加为子init视图之前的视图。

如果您从另一个 nib(最后一个代码部分)加载它,您仍然需要将它添加到视图层次结构中。

于 2013-01-05T12:37:02.207 回答
0

我认为您的初始代码应该是这样的:

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

addSubView分配后

希望对你有帮助

于 2013-01-05T12:42:46.750 回答