【问题标题】:Object addSubview only works in viewDidLoad对象 addSubview 仅适用于 viewDidLoad
【发布时间】:2010-06-16 07:32:32
【问题描述】:

我是 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 对象时,一切正常。

提前致谢

【问题讨论】:

    标签: uiview


    【解决方案1】:

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

    因此,在您的 .h 文件中,在 @interface 中您编写 声明

    shapeViewController *shapeView;
    

    并且在你的 viewDidLoad 中,你会初始化你之前声明的内容:

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

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

    【讨论】:

    • 您好伊万斯,感谢您的意见。当我在界面中声明 shapeView 实例时,出现错误“'shapeView' 的本地声明隐藏实例变量。
    • 你没有提到dealloc 或使用属性吗?我希望你不希望@DecodingSand 面临内存泄漏......
    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多