我最近对UIViews感到有些困惑,我一直在使用它们直到这一点,他们只是拒绝遵守!
我有一个UIViewController,它包含5个不同的视图。我已经为这些视图创建了IBOutlets,因为我想在运行时交换它们:
IBOutlet UIView *view1;
IBOutlet UIView *view2;
IBOutlet UIView *view3;
IBOutlet UIView *view4;
IBOutlet UIView *view5;
为了使它们更易于维护,我决定将它们全部保存在一个名为viewArray的数组中。现在我尝试将视图添加到数组中,如下所示:
viewArray = [NSArray arrayWithObjects:view1, view2, view3, view4, nil];
这是在我的UIViewController类的init函数中调用的。我已将所有IBOutlet链接到xib / interface文件中的相关视图,但它们似乎未初始化。进一步调试后,看起来直到调用init函数后才初始化视图?
那么如何创建这些对象的数组呢?我需要在显示视图本身之前选择相关视图,因此viewDidLoad不是一个选项。
我知道您可以抓取事物的标记并使用以下方式隐式设置它们:
imageExample = (UIImageView *)[self.view viewWithTag:100];
但这可以用来查找视图,因为它肯定会在最初初始化的视图(view1)中搜索标签吗?
感谢先进的任何帮助, 亲切的问候, 埃利奥特
答案 0 :(得分:1)
您可以懒得初始化viewArray
,但必须使用self.viewArray
代替不合格的viewArray
。
以下是如何做到这一点:
在.h文件中:
NSArray* _viewArray;
@property (nonatomic, readonly) NSArray *viewArray;
在.m文件中:
-(NSArray*) viewArray {
if (!_viewArray) {
_viewArray = [NSArray arrayWithObjects:view1, view2, view3, view4, nil];
}
return _viewArray;
}