gpt4 book ai didi

ios - -[PickerViewController super View ] : unrecognized selector sent to instance & TableView ->ViewController w/Picker View

转载 作者:行者123 更新时间:2023-11-29 03:53:58 26 4
gpt4 key购买 nike

我是一名新手 ios 程序员,在从自定义 UITableViewController 场景推送到包含 Picker View 并实现 @required pickerview 委托(delegate)/数据源方法的自定义 UIViewController 场景时遇到一些麻烦。

[我在这里有一个屏幕截图以提供更多见解,但我没有代表来发布图像。想象一个具有三个静态行的 tableview Controller ,每个静态行都提供详细信息以推送到相应的选择器 View - Image ]

当我点击任何表格的披露指示器时,问题会在运行时发生。返回的错误是

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PickerViewController superview]: unrecognized selector sent to instance."

如上所述,LocationFilter 是 UITableViewController 的子类,并且仅包含标签和步进器的几个属性。

我的选择器 View Controller 的代码如下:

#import <UIKit/UIKit.h>

@interface PickerViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>
{
NSArray *sectionCandidates;
NSArray *bankCandidates;
NSArray *positionCandidates;
}

@property (weak, nonatomic) IBOutlet UIPickerView *sectionPicker;
@property (weak, nonatomic) IBOutlet UIPickerView *bankPicker;
@property (weak, nonatomic) IBOutlet UIPickerView *positionPicker;
@property NSArray *sectionCandidates, *bankCandidates, *positionCandidates;

@end

和.m:

#import "PickerViewController.h"
#import "SlotMachine.h"

@implementation PickerViewController

@synthesize sectionCandidates, sectionPicker, bankCandidates, bankPicker, positionCandidates, positionPicker;

- (void)viewDidLoad
{
[super viewDidLoad];
sectionCandidates = [NSArray arrayWithObjects:@"A", @"B", @"C", @"D", @"E", @"F", @"G", @"H", @"I", nil];
bankCandidates = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", nil];
positionCandidates = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", nil];
}

// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//Handle Selection
}

// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
switch ([pickerView tag])
{
case 0:
return [sectionCandidates count];
case 1:
return [bankCandidates count];
case 2:
return [positionCandidates count];
default:
return 0;
}
}

// returns the label for each row
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch ([pickerView tag])
{
case 0:
return [sectionCandidates objectAtIndex:row];
case 1:
return [bankCandidates objectAtIndex:row];
case 2:
return [positionCandidates objectAtIndex:row];
default:
return @"Null";
}
}

@end

不幸的是,选择器 View 在故障排除方面似乎没有得到太多详细的关注,因此我无法在 SO 或我一直在阅读的一些 iOS 书籍中找到太多内容来帮助我解决这个问题。我对“发送到实例的无法识别的选择器”的可能原因有一个大概的了解,但不确定如何修复该问题。我提前感谢我可能收到的任何帮助,如果我没有正确格式化或提供足够/相关的信息,我也深表歉意,因为这是我的第一篇文章!

最佳答案

从 Storyboard 中,我在每个 View 选择器 View Controller 中看到一个选择器 View ,但您在代码中声明了三个选择器 View 的 IBOutlet。您要么需要将 IB 中的这三个 View Controller 合并为一个,其中包含三个选取器 View ,要么需要创建三个单独的 View Controller 子类,仅包含一个 IBOutlet UIPickerView 属性。

由于您已将这些选取器 View 设置为属性,因此不需要这些标签。您可以通过选择器 View 本身的检查来更改标签的检查:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView == self.sectionPicker) {
return [sectionCandidates count];
}
else if (pickerView == self.bankPicker) {
return [bankCandidates count];
}
else if (pickerView == self.positionPicker) {
return [positionCandidates count];
}
return 0;
}

您也需要对选择器 View 数据源 titleForRow:forComponent 进行类似的更改。

关于ios - -[PickerViewController super View ] : unrecognized selector sent to instance & TableView ->ViewController w/Picker View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738592/

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