在我的应用程序中,当用户单击infoButton时,它应该在特定位置向屏幕添加另一个视图。我正在尝试使用以下方法实现此行为:
- (IBAction)showInfo1:(id)sender
{
UIView *myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];
[self.view addSubview:myView1];
}
(我在班级的头文件中宣布了所有内容。)
当我运行代码并按下按钮时,似乎没有任何事情发生(我没有看到新视图)。
我还注意到XCode正在显示以下警告:
'myView1'的本地声明隐藏了实例变量。
有没有人有任何想法?
答案 0 :(得分: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)
答案 1 :(得分:1)
“'myView1'的本地声明隐藏了实例变量。”出现消息,因为您已在类中声明了一些具有相同名称的属性(即使类型不同)。
如果您将UIView *myView1
放在类定义中,那么您的方法将类似于
- (IBAction)showInfo1:(id)sender{
myView1 = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];
[self.view addSubview:myView1];
}
以下是更多注意事项:您必须在停止使用时释放myView1
,避免多次放置等等,但此处我们有基本想法。
最后,也许您的视图已添加,但是因为它还没有包含任何内容,您没有注意到它。您还想检查UIViewController以查看是否适合您。