我想在点击按钮时动态加载视图。
让我们说视图是'MyView'
我宣称它是
IBOutlet UIView *myView;
并通过接口构建器从 myView.xib 制作。
我没有为此视图设置属性和合成
现在我想要的是在点击按钮时将此视图分配给内存
所以我试着使用viewController的按钮方法
(void) buttonPressed1{
myView = myView = [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0];
myView.frame = CGRectMake(30, 40, 200, 200);
[self.view addSubview:myView];
}
已成功加载。 :)
现在我想在其他按钮点击中访问此视图..
所以我写了
-(IBAction) buttonPressed2:(id)sender
{
myView.alpha = 0;
[myView release];
}
所以当我运行它时 - 它可以正常运行
on buttonPressed它将该视图添加到其他点击它淡出并释放该视图。
但现在当我再次点击按钮添加视图时,它会显示
modifying layer that is being finalized - 0x6807b60
然后点击按钮2,它崩溃......
基本上我的要求是只有在使用它之后才将该视图保留在内存中,它应该被解除分配..
所以上面的方法是好的,或者还有其他方法可以做到......
这个错误意味着什么????
!更多查询
以上情况......
在运行时点击按钮???? ....
分配内存到myView当我在xcode中通过仪器进行测试时,按钮点击中的图表中没有显示分配...
所以请帮帮我......
请帮助..
提前致谢
答案 0 :(得分:1)
当您发布视图时:[myView release];
它不会从超级视图中删除。而且:你不应该将它作为自动释放的对象创建它。
解决方案可能是下一个:
(void) buttonPressed1{
if (myView)
{
[myView removeFromSuperview];
}
myView = [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0];
myView.frame = CGRectMake(30, 40, 200, 200);
[self.view addSubview:myView];
}
-(IBAction) buttonPressed2:(id)sender
{
myView.alpha = 0;
//[myView release];
}