gpt4 book ai didi

ios - 我的自定义 UIView 未显示在屏幕上

转载 作者:行者123 更新时间:2023-11-28 22:27:45 25 4
gpt4 key购买 nike

我创建了一个自定义 UIView 来保存一个选择器 View 和一个带有几个按钮的导航栏。我还创建了一个带有导航栏、2 个按钮和选择器的自定义 Nib ,所有这些都链接到我的头文件。我让它成为每个单独类的委托(delegate)来处理所有选择器 View 委托(delegate)。我的问题是它不会在需要时显示在屏幕上。我知道该方法被调用,但自定义 View 不会出现。下面是我的代码。

自定义选择器.m:

- (IBAction)selectClick:(id)sender
{
NSObject *obj = [self.list objectAtIndex:[self.picker selectedRowInComponent:0]];
[self.delegate pickerDidSelect:obj];
}

- (IBAction)selectCancel:(id)sender
{
[self.delegate removePickerFromView:self];
}

- (id)initWithFrame:(CGRect)frame
{
frame.size = CGSizeMake(320, 260);
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}

self.picker = [[UIPickerView alloc] init];
self.picker.dataSource = self;
self.picker.delegate = self;
self.picker.showsSelectionIndicator = YES;

return self;
}

-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return [self.delegate numberOfComponentsInPicker:pickerView];
}

-(NSInteger) pickerView: (UIPickerView *) pickerView numberOfRowsInComponent:(NSInteger)component
{
return [self.delegate picker:pickerView numberOfRowsInComponent:component];
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return [self.delegate picker:pickerView titleForRow:row forComponent:component];
}

调用显示的方法

-(void)displayPicker
{
NSLog(@"display picker");
picker = [[CustomPicker alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height, 320, 260)];
#warning picker set up incomplete
[self.view addSubview:picker];
CGRect frame = picker.frame;
frame.origin = CGPointMake(0, self.view.frame.size.height - 260);
[UIView animateWithDuration:1.5 animations:^{
[picker setFrame:frame];
}];
}

现在,我只是不明白为什么没有显示我的自定义 View 。

谢谢!

最佳答案

CustomPicker 类的实现不会向自身添加任何 subview 。您的自定义选择器 View 已正确添加和显示,但它是空的,因此看不到任何东西。

更新CustomPickerinitWithFrame:方法,将self.picker添加到self

[self addSubview:self.picker];

顺便说一句 - 您创建和设置 UIPickerView 的代码应该在 if 语句中完成。如果 selfnil,您不想运行该代码。

- (id)initWithFrame:(CGRect)frame
{
frame.size = CGSizeMake(320, 260);
self = [super initWithFrame:frame];
if (self) {
self.picker = [[UIPickerView alloc] init];
self.picker.dataSource = self;
self.picker.delegate = self;
self.picker.showsSelectionIndicator = YES;
[self addSubview:self.picker];
}

return self;
}

关于ios - 我的自定义 UIView 未显示在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18453175/

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