【发布时间】:2013-08-21 20:29:51
【问题描述】:
我想创建两个并排的视图以添加到我的视图控制器的视图中。为了避免重复代码,我正在尝试编写一个通用方法来为我创建两个视图。但是,此代码对我不起作用。 view1 和 view2 都是 ivars。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self makeView:view1];
[self makeView:view2];
}
- (void)makeView:(UIView*)view {
CGRect frame = self.view.bounds;
frame.size.height = frame.size.height/2;
if (view == view2) {
frame.origin = CGPointMake(0, frame.size.height);
}
view = [[UIView alloc] initWithFrame:frame];
[self.view addSubview:view];
}
我认为这个问题可能与 line view == view2,某种变量引用错误有关。 view == view2 总是计算为真,所以 view1 永远不会出现。并且在代码的后面部分 view1 和 view2 为 nil。
【问题讨论】:
-
具体出了什么问题?它会抛出异常吗?碰撞?不显示您的意见?配置错误的视图?控制台中有什么东西吗?
-
== 是一个指针引用。尝试 [查看 isEqual: view2]
-
view1和view2是从 xib 或故事板加载的吗?如果是这样,只需设置它们的框架而不是分配新视图。如果不是,它们是什么(希望是空指针除外)? -
我正在以编程方式完成所有工作。
-
如果它们还没有被分配,你将为 view1 和 view2 传递一个 nil 指针,然后与一个 nil 指针进行比较,这总是正确的。运行时看到 if(nil == nil)
标签: ios