Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios -[EdgeAnalyticPageView_Cell_Selector didSelectItem:数据源:]:无法识别的选择器发送到实例0x7fc6f314fef0_Ios_Objective C_Uitableview - Fatal编程技术网

Ios -[EdgeAnalyticPageView_Cell_Selector didSelectItem:数据源:]:无法识别的选择器发送到实例0x7fc6f314fef0

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

使用UItables设置设置菜单。出于某种原因,“[\u listener didSelectItem:indexPath dataSource:self]”正在引发异常“无法识别的选择器发送到实例”。很难理解为什么会发生这种情况。 任何指点都将不胜感激


它缺少
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