2

在我的应用程序中,当用户单击 infoButton 时,它应该在屏幕的特定位置添加另一个视图。我正在尝试使用以下方法来实现此行为:

- (IBAction)showInfo1:(id)sender
  {
    UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];   
    [self.view addSubview:myView1]; 
  }

(我在班级的头文件中声明了所有内容。)

当我运行代码并按下按钮时,似乎什么都没有发生(我没有看到新视图)。

我还注意到 XCode 显示以下警告:

'myView1' 的本地声明隐藏了实例变量。

有没有人有任何想法?

4

2 回答 2

4

你怎么知道什么都没有改变?

看起来 myView1 实际上不包含任何内容。尝试设置 myView1 的背景颜色

- (IBAction) showInfo1: (id) sender
{
    UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];   
    myView1.backgroundColor = [UIColor redColor];
    [self.view addSubview: myView1]; 
}

例如,要在特定点打开它,您需要更改 CGRectMake() 中的参数

要在最左上角打开它,宽度为 50,高度为 20,您可以:

CGRectMake(0, 0, 50, 20)
于 2011-03-29T16:05:30.487 回答
1

“'myView1' 的本地声明隐藏了实例变量。” 出现消息是因为您在类中声明了一些具有相同名称的属性(即使类型不同)。

如果你UIView *myView1输入你的类定义,你的方法看起来像

- (IBAction)showInfo1:(id)sender{
  myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];   
  [self.view addSubview:myView1]; 
}

这里有更多的考虑:你必须myView1在停止使用时释放它,避免多次放置等等,但这里我们有基本的想法。

最后,也许你的视图已经被添加了,但是因为它还没有包含任何东西,你没有注意到它。你也想检查 UIViewController 看看是否更适合你。

于 2011-10-18T19:26:41.247 回答