gpt4 book ai didi

ios - 从 XIB 创建多个自定义 View 并以编程方式将它们添加到 ViewController

转载 作者:行者123 更新时间:2023-11-29 01:15:30 24 4
gpt4 key购买 nike

我将从描述我正在努力完成的事情开始,然后描述我已经尝试过的事情。我很确定我尝试的方法不是最好的方法,所以请根据需要更正我的方法!

我有一个 ViewController.mCustomView.xib 中的自定义 View .自定义 View 有 UIButtonsUILabels由一组自定义对象填充。

用户流程应如下所示:ViewController开始显示CustomView其标签由

填充

CustomObjectArray[0] -> 用户按下按钮 -> CustomView 的另一个“副本”滑入 View ,超过以前的版本。

它的标签和按钮由 CustomObjectArray[1] 填充-> 用户按下按钮 -> 重复直到数组末尾。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

到目前为止我做了一个ViewController.m/h ,一个CustomView.m/hCustomView.xib文件。我使用界面生成器来进行布局。

在 XIB 文件中顶级 View 的“自定义类”选项卡上,我键入“CustomView”。我还将 IBOutlets 从 XIB 文件拖到 CustomView HEADER (.h)文件。

ViewController , 在 -( instancetype ) init 下方法,我使用正常的 initWithNib 创建一个自定义 View 方法。然后我这样做:

self.view = CustomViewVariableName; 

当我运行程序时, View 显示正常。但是,当我尝试选择器时,按钮无法识别任何内容:

[currentCustomView.continueButton addTarget:self action:@selector(continueButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

我这里做错了什么?

更重要的是,考虑到我所描述的目标,我这样做是否正确?我需要 CustomView.m/h 吗?文件?或者我可以只使用 XIB 和 ViewController 做同样的事情吗?文件。请记住,我需要有“多个副本”并将它们滑动到彼此的顶部,直到我的自定义对象数组的末尾。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~根据要求提供更多代码。

ViewController :

- (instancetype)init
{
currentCustomView = [[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil] objectAtIndex:0];
self.view = currentQuizQuestionView;

.......

return self;
}

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

[currentCustomView.continueButton addTarget:self action:@selector(continuePressed:) forControlEvents:UIControlEventTouchUpInside];
}

-(void)continuePressed:(id)sender{

NSLog(@"Current position");
//[self moveInQuestion];
}

CustomView.h :

#import <UIKit/UIKit.h>

@interface CustomView : UIView
@property (weak, nonatomic) IBOutlet UIButton *continueButton;
@end

CustomView.m :

这只是默认页面,我在此文件中没有添加任何内容。

CustomView.xib :

XIB first view

XIB second view

最佳答案

我不确定我是否完全理解您的要求。假设您希望将多个 CustomView 作为 ViewController 的 subview ,并且这些 subview 可以在按下各自的按钮后逐个显示。

添加 subview 的第一件事:

self.view = CustomViewVariableName; 

因为根据我的假设,CustomsViews 将是 subview ,所以上面一行是错误的。您可能想要这样的东西。

for (NSInteger i = 0; i < 5; i++) {
CustomView *v = [[CustomView alloc] initWithNib];
[v.button addTarget:self
action:@selector(continuePressed:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:v];
}

其次,我注意到您希望有一个数组作为处理程序来引用所有 subview 。我们可以通过在上面的 for 循环中再插入一行来将上面的 CustomView 添加到一个可变数组中。

[_customObjectArray addObject:v.button];

最后,我创建了一个简单的项目并尝试实现您提到的内容。或许你可以拿来做个引用。 https://db.tt/Och2tzyG

关于ios - 从 XIB 创建多个自定义 View 并以编程方式将它们添加到 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35238127/

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