0

私のアプリでは、複数のビューを呼び出すビュー コントローラーがあります。これらのビューはすべて UIView です。それはうまくいきますが、すべての場合ではありません。呼び出されるビューの 1 つには、いくつかのラベル、テキスト フィールド、および 2 つの 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 で作成した接続を次に示します。 ここに画像の説明を入力

ここに画像の説明を入力

誰かが私が間違っていたことを知っていて、私を助けることができますか?

4

2 に答える 2

0

コードでビューを作成している場合 (最初のサンプル)、サブビューとして追加しようとするallocinitビュー。

別のペン先 (最後のコード セクション) からロードしている場合でも、それをビュー階層に追加する必要があります。

于 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 に答える