Ios -[EdgeAnalyticPageView_Cell_Selector didSelectItem:数据源:]:无法识别的选择器发送到实例0x7fc6f314fef0
使用UItables设置设置菜单。出于某种原因,“[\u listener didSelectItem:indexPath dataSource:self]”正在引发异常“无法识别的选择器发送到实例”。很难理解为什么会发生这种情况。 任何指点都将不胜感激Ios -[EdgeAnalyticPageView_Cell_Selector didSelectItem:数据源:]:无法识别的选择器发送到实例0x7fc6f314fef0,ios,objective-c,uitableview,Ios,Objective C,Uitableview,使用UItables设置设置菜单。出于某种原因,“[\u listener didSelectItem:indexPath dataSource:self]”正在引发异常“无法识别的选择器发送到实例”。很难理解为什么会发生这种情况。 任何指点都将不胜感激 它缺少EdgeAnalyticPageView\u单元格的代码,可能还缺少调用setupWithTitle:items:multiSelect:extraData:listener。您是否有警告说它不是CCSelectorViewContro
它缺少
EdgeAnalyticPageView\u单元格的代码,可能还缺少调用setupWithTitle:items:multiSelect:extraData:listener
。您是否有警告说它不是CCSelectorViewControllerListener
,或者它缺少一些委托方法,如didSelectItem:dataSource:
,或者如果它是可选的,则没有警告……我根据要求提供了进一步的信息。非常感谢您的帮助。哪里被称为-(void)setupWithTitle:(NSString*)title items:(NSArray*)items multiSelect:(BOOL)multiSelect extraData:(NSDictionary*))extraData listener:(id)listener{
?哪里设置了listener
?@Lame感谢您的帮助。您能再清楚一点吗?我不确定我是否完全理解。。。
#import "CCSelectorViewController.h"
#import "CCDataSourceSection_Title.h"
#import "CCSelector_Cell.h"
#import "CCTableDataSource.h"
#define DID_SELECT_ITEM NSSelectorFromString(@"didSelectItem:dataSource:")
#define DID_DESELECT_ITEM NSSelectorFromString(@"didDeselectItem:dataSource:")
@interface CCSelectorViewController()
@end
@implementation CCSelectorItem
-(instancetype)initSelected:(BOOL)selected{
self = [super init];
if( self != NULL){
_selected = selected;
}
return self;
}
-(NSString *)title{
[CCAssert ASSERT:NO message:@"Needs Implementation"];
return NULL;
}
@end
@interface CCSelectorViewControllerDataSource()
@property (weak) id<CCSelectorViewControllerListener> listener;
@end
@implementation CCSelectorViewControllerDataSource
-(instancetype)initWithTable:(UITableView *)table items:(NSArray*)items multiSelect:(BOOL)multiSelect listener:(id<CCSelectorViewControllerListener>)listener{
self = [super initWithTable:table];
if( self != NULL ){
table.allowsMultipleSelection = multiSelect;
table.tintColor = [CCView OptionSelectColor];
_listener = listener;
[self populateWithItems:items];
}
return self;
}
-(void)populateWithItems:(NSArray*)items{
CCDataSourceSections result = [CCDataSource createSections];
CCDataSourceSection_Title* section = [[CCDataSourceSection_Title alloc] initWithTitle:NULL];
[section addEntries:items];
[result addObject:section];
[self reloadSections:result];
}
-(void)setAllSelected:(BOOL)selected{
for( CCSelectorItem* item in [self entriesForSection:0]){
NSIndexPath* indexPath = [self indexPathOfObject:item];
if( selected ){
[self tableView: [self getTable] didSelectRowAtIndexPath:indexPath];
}else{
[self tableView: [self getTable] didDeselectRowAtIndexPath:indexPath];
}
}
[self reloadData];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CCSelector_Cell* result;
CCSelectorItem* item = (CCSelectorItem*)[self objectAtIndexPath:indexPath];
{
result = [CCTableView_Cell dequeueReusableCellForTable:tableView aClass:[CCSelector_Cell class]];
{
[result setup:item tableView:tableView indexPath:indexPath];
}
}
return result;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
CCSelectorItem* item = (CCSelectorItem*)[self objectAtIndexPath:indexPath];
item.selected = YES;
CCSelector_Cell* cell = [tableView cellForRowAtIndexPath:indexPath];
{
[cell refresh:tableView indexPath:indexPath];
}
[_listener didSelectItem:indexPath dataSource:self];
}
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
CCSelectorItem* item = (CCSelectorItem*)[self objectAtIndexPath:indexPath];
item.selected = NO;
CCSelector_Cell* cell = [tableView cellForRowAtIndexPath:indexPath];
{
[cell refresh:tableView indexPath:indexPath];
}
[_listener didDeselectItem:indexPath dataSource:self];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return [CCView UIMULTIPLIER] * 44;
}
@end
@interface CCSelectorViewController ()
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property CCSelectorViewControllerDataSource* dataSource;
@property NSString* aTitle;
@property NSArray* items;
@property BOOL multiSelect;
@property NSDictionary* extraData;
@property (weak) id<CCSelectorViewControllerListener> listener;
@end
@implementation CCSelectorViewController
-(void)setupWithTitle:(NSString*)title items:(NSArray*)items multiSelect:(BOOL)multiSelect extraData:(NSDictionary*)extraData listener:(id<CCSelectorViewControllerListener>)listener{
_aTitle = title;
_items = items;
_multiSelect = multiSelect;
_extraData = extraData;
_listener = listener;
}
-(void)viewDidLoad{
[super viewDidLoad];
self.title = _aTitle;
_dataSource = [[CCSelectorViewControllerDataSource alloc] initWithTable:_tableView items:_items multiSelect:_multiSelect listener:_listener];
}
-(void)addNavigationItems{
//override so that we dont add the x in the top right
}
-(void)goBack:(id)sender{
[super goBack:sender];
CCDataSourceSection* section = [_dataSource sectionAtIndex:0];
[_listener onComplete:[section entries] extraData:_extraData];
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}
@end
#import "EdgeAnalyticPageView_Cell.h"
#import "EdgeAnalyticViewController.h"
@interface EdgeAnalyticPageView_Cell()
@property (nonatomic, strong) EdgeAnalyticViewController* parent;
@property (nonatomic) EdgeAnalyticField* field;
@property (nonatomic) EdgeAnalyticField* parentField;
@property (nonatomic) NSUInteger pageIndex;
@end
@implementation EdgeAnalyticPageView_Cell
-(void)setup:(EdgeAnalyticField*)field parentField:(EdgeAnalyticField*)parentField pageIndex:(NSUInteger)pageIndex parent:(__weak EdgeAnalyticViewController*)parent{
_parent = parent;
_field = field;
_parentField = parentField;
_pageIndex = pageIndex;
[self onSetup:_field parentField:_parentField pageIndex:_pageIndex parent:_parent];
}
-(void)onSetup:(EdgeAnalyticField*)field parentField:(EdgeAnalyticField*)parentField pageIndex:(NSUInteger)pageIndex parent:(__weak EdgeAnalyticViewController*)parent{
[CCAssert ASSERT:NO message:@"Needs Implementation"];
}
-(BOOL)isEnabled{
return [_parent fieldEnabled:_field];
}
-(NSUInteger)pageIndex{
return _pageIndex;
}
-(EdgeAnalyticField*)field{
return _field;
}
-(EdgeAnalyticField*)parentField{
return _parentField;
}
-(EdgeAnalyticViewController*)parent{
return _parent;
}
@end