gpt4 book ai didi

iOS:创建两个 View 的方法

转载 作者:行者123 更新时间:2023-11-29 13:07:07 25 4
gpt4 key购买 nike

我想创建两个并排 View 以添加到我的 View Controller 的 View 中。为了避免重复代码,我正在尝试编写一个通用方法来为我创建两个 View 。但是,此代码对我不起作用。 view1 和 view2 都是 ivar。

- (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];
}

我认为问题可能与 view == view2 这一行有关,某种变量引用错误。 view == view2 的计算结果总是为真,因此 view1 永远不会出现。在代码的后面部分,view1 和 view2 为 nil。

最佳答案

让我们一步步来找出答案。

首先,你的viewWillAppear被调用了,view1view2都是nil,因为你还没有将它们设置为任何值。

然后,您在 view1 上调用您的方法,它是 nil,因此参数将是值 nil

您创建框架,然后进入您的 if 语句。参数(view)是nil,正如我们之前所说,view2也是nil,因为,正如我们前面说过,它以 nil 开始,我们还没有将它设置为任何东西。因此,view==view2 为真,因为 nil==nil 为真,并且您获得了 view2 所需的原点框架。

然后,您将 view 设置为新的 UIView 并将其添加到 subview ,这确实添加了 View (您想要的 view2),但您仍然没有设置 view1 变量。

在此之后,您将对 view2 执行完全相同的操作,这会为您提供具有完全相同框架的另一个 View ,因为 viewview1view2 仍然是 nil

为了绕过这个,你实际上应该在该方法之外创建 view1view2(view1/2 = [[UIView alloc ] init];) 并在方法内完成所有设置部分。

关于iOS:创建两个 View 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com