对象addSubview仅适用于viewDidLoad

时间:2010-06-16 07:32:33

标签: uiview

我是iPhone开发人员的新手,需要一些帮助才能添加子视图。

我有一个可重用的对象,它存储在一个单独的.h .m和xib文件中。 我想在我的主项目的视图控制器中使用此对象。我已经包含了标题,并且对象的赋值不会产生任何错误。我能够将对象加载到我的主项目中,但只能在viewDidLoad方法中使用它。我打算在我的屏幕上有一些这样的对象,我正在寻找更强大的解决方案,然后只是硬连接形状对象的多个副本。

一旦我尝试访问viewDidLoad之外的对象,它就会产生一个变量未知错误 - 首先在此函数中使用。

这是我的viewDidLoad方法:

shapeViewController * shapeView = [[shapeViewController alloc] initWithNibName:@“shapeViewController”bundle:nil];

[self.view addSubview:shapeView.view];

//这是问题界限 //此代码可以更改形状对象上的显示

[shapeView updateDisplay:@“123456”];

----但是viewDidLoad之外的相同代码会生成错误。

总而言之,一切正常,除非我尝试在其余方法中访问shapeView对象。

提前致谢

1 个答案:

答案 0 :(得分:2)

您需要在界面中声明shapeView实例,而不仅仅是在一个函数内部。然后函数中的代码就变成了初始化。

所以,在你的.h文件中,在@interface里面你写了声明

shapeViewController *shapeView;

在viewDidLoad中,您将初始化之前声明的内容:

shapeView = [[shapeViewController alloc] initWithNibName:@"shapeViewController" bundle:nil];
[self.view addSubview:shapeView.view];

现在您可以在整个班级中使用shapeView。