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

我建议使用包含这两个视图的 UINavigation 控制器。

您可以参考此链接Swaping between UIViews in one UIViewController

基本上,您创建一个视图,为第一个视图 removeSubview,然后使用 addSubview 添加第二个视图![view1 removeFromSuperview];

[self.view addSubview: view2];

其他参考来源: 切换/交换视图的简单、干净的方法?

如何在简单的 View iPhone App 上为 View Swap 设置动画?

希望这会有所帮助!

于 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 回答