- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名新手 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/
我有一个 TableView,它在 ViewController 上显示一个 PickerViewController。 ViewController 显示一些图像和一个按钮而不是触发一个 Actio
我有一个使用选择器 View 的具有多种声音的音乐播放器。我的问题是,当我单击下一首音乐时,上一首音乐将与我选择的音乐重叠。这意味着当我滚动选取器 View 以选择一个新对象时,它将播放新的音乐/声音
我是一名新手 ios 程序员,在从自定义 UITableViewController 场景推送到包含 Picker View 并实现 @required pickerview 委托(delegate)
我是一名优秀的程序员,十分优秀!