2

これが私のコードです:

if([pantallas objectForKey:par]){
    UIView *vista= [[UIView alloc] initWithFrame:self.Botones.frame];
    vista.backgroundColor= [UIColor brownColor];

    CGSize la=  CGSizeMake(50,60);
    int cuantos= [part2 count];
    NSArray *arr= [COLGenerales tileN:cuantos RectsOfSize:la  intoSpaceOf:vista.frame withMaxPerRow:5 spaceVertical:10 spaceHorizontal:10];
    for(int j=0; j<cuantos; j++){
        UIButton *bot= [[UIButton alloc] initWithFrame:[[arr objectAtIndex:j] CGRectValue]];
        bot.tag=j;
        bot.titleLabel.text=par;
        bot.titleLabel.hidden=true;
        bot.imageView.image = [UIImage imageNamed:[[part2 allKeys] objectAtIndex:j]];
        [bot addTarget:self action:@selector(registrar:) forControlEvents:UIControlEventTouchDown];
        [vista addSubview:bot];

    }

    [pantallas setObject:vista forKey:par];

   self.Botones= vista; 
    }else{
    self.Botones= [pantallas objectForKey:par];
}

Botones は、このクラスが制御するビューに埋め込まれた単純なビューです (最初に Nib ファイルによって開始されます)。COLGenerales のクラス メソッドは、NSValues としてコード化された CGRects の配列を返します。registrar: はローカル メソッドです。

すべてが適切に設定されます (デバッガーで徹底的に確認しました)。ビューが正常に作成、設定され、ディクショナリに追加されます。

ただし、実際の画面が変わることは絶対にありません。ボタンに何らかの問題がないかどうかを確認するためだけに、背景色の変更も含めました。何もない。これに対する提案された解決策はありますか?

4

2 に答える 2

1

これら 2 つのビューを格納する UINavigation コントローラーを使用することをお勧めします。

このリンクを参照できますUIViewController 内の UIView 間の交換

基本的に、1 つのビューを作成し、最初のビューを removeSubview してから、2 つ目のビューを addSubview で追加します。[view1 removeFromSuperview];

[self.view addSubview: view2];

その他の参照元: ビューを切り替える/交換する簡単でクリーンな方法は?

シンプルなView iPhone Appでビュースワップをアニメーション化するには?

うまくいけば、これが役に立ちます!

于 2013-04-03T20:25:43.140 に答える
1

IBOutlet であるプロパティには、ビュー階層への固有の接続はありません。xib からそのプロパティを設定できるようにするだけです。self.Botones を設定するときは、次のようにする必要があります。

[self.Botones removeFromSuperview];
self.Botones = newValue;
[self.BotonesSuperview addSubview:self.Botones];

多くの場所で更新self.Botonesし、変更を常に画面に反映させたい場合は、これを setter 実装に追加できます。

-(void)setBotones:(UIView*)newValue {
    if (newValue != _Botones) {
        [_Botones removeFromSuperview];
        _Botones = newValue;
        [self.BotonesSuperview addSubview:_Botones];
    }
}
于 2013-04-03T20:25:59.040 に答える