刚开始iPhone开发时,我似乎错过了一些基本的东西。
在基于视图的应用程序中,我在ViewController实现文件中添加了一个UIView子类,并且可以设置一个值:
- (void)viewDidLoad {
[super viewDidLoad];
CGRect myRect = CGRectMake(20, 50, 250, 320);
GraphView *graphView = [[GraphView alloc] initWithFrame:myRect];
[self.view addSubview:graphView];
graphView.myString = @"Working here";
}
当我尝试使用同一文件中的操作更改相同的值时,构建失败,因为graphView未声明:
- (void)puschButton1 {
graphView.myString = @"Not working here";
}
因为我使用的是UIView子类,所以我的GraphView实例没有插座。
我如何获得对子视图的引用?或者应该以另一种方式完成?
提前致谢
谢
答案 0 :(得分:0)
您可以将graphView
存储为类变量。
编辑:请注意,addSubview
会增加对象的保留计数,在您班级的某个位置,您需要平衡alloc
与release
和addSubview
使用removeFromSuperview
或release
。
答案 1 :(得分:0)
最简单的解决方案是为视图控制器设置graphView
实例变量,而不是在viewDidLoad
中声明它。
在.h
文件中添加以下内容:
@class GraphView;
@interface MyViewController : UIViewController {
GraphView *graphView;
}
// ... method declarations ...
@end
如果您不想这样做,另一种方法是设置graphView
的{{1}}属性,然后调用superview的tag
方法以在需要时检索视图它
我不确定你的意思“因为我使用的是UIView子类,所以我的GraphView实例没有插座。”您通常在控制器类上声明出口,无论您使用的是viewWithTag:
的子类都无关紧要。
顺便说一句,我会注意到你可能UIView
release
某个时候,或者你的内存泄漏。