【发布时间】:2016-12-19 14:11:13
【问题描述】:
虽然我确实得到了一些帮助,但我无法仅从提示中轻松找到修复,因为我对此很陌生,这是在一个已有几年历史的应用程序中,我正在努力使其符合当今的标准,虽然这不是我的主要领域,但目前是我的任务。
我有一个保存放入其中的数据的表单,但它在第一次输入时崩溃,无论我选择从哪个文本字段开始,我都会从这一行得到错误:
[self saveValue:cell.textInput.text forRow:path.row atSection:path.section];
错误:
[UITableViewWrapperView textInput]: unrecognized selector sent to instance 0x106958c00
上下文:
-(void)textFieldDidChange:(NSNotification *)notif {
atelierFormInputCell *cell = (atelierFormInputCell*) [[[(UITextField*)notif.object superview] superview] superview] ;
NSIndexPath *path = [form indexPathForCell:cell];
[self saveValue:cell.textInput.text forRow:path.row atSection:path.section];
}
保存值函数:
-(BOOL)saveValue:(NSString *)value forRow:(NSInteger) row atSection:(NSInteger) section {
switch (section) {
case 0:
switch (row) {
case 0:
car.marque = value;
break;
case 1:
car.modele = value;
break;
case 2:
car.mise_en_circul = value;
break;
case 3:
car.immatriculation = value;
break;
case 4:
car.num_serie = value;
break;
}
break;
case 1:
switch (row) {
case 0:
car.code_clef = value;
break;
case 1:
car.code_autoradio = value;
break;
case 2:
car.taille_pneu_avant = value;
break;
case 3:
car.taille_pneu_arriere = value;
break;
case 4:
car.pression_pneu_avant = value;
break;
case 5:
car.pression_pneu_arriere = value;
break;
}
break;
case 2:
switch (row) {
case 0:
car.type_huile = value;
break;
}
break;
case 3:
switch (row) {
case 0:
car.date_achat = value;
break;
case 1:
car.km_init = value;
break;
}
break;
case 4:
switch (row) {
case 0:
car.nom_assurance = value;
break;
case 1:
car.num_assurance = value;
break;
}
break;
case 5:
switch (row) {
case 0:
if ([car.choix_last_entretien isEqualToString:@"date"]) car.date_last_entretien = value;
else car.km_last_entretien = value;
break;
case 1:
if ([car.choix_next_entretien isEqualToString:@"date"]) car.date_next_entretien = value;
else car.km_next_entretien = value;
break;
case 2:
car.date_last_ct = value;
break;
case 3:
car.date_next_ct = value;
break;
}
break;
case 6:
switch (row) {
case 0:
car.notes = value;
break;
}
break;
}
return YES;
}
根据我尝试更改的建议:
atelierFormInputCell *cell = (atelierFormInputCell*) [[[(UITextField*)notif.object superview] superview] superview] ;
到
atelierFormInputCell *cell =(atelierFormInputCell *) [(UITextField*)notif superview];
但它同时崩溃,给我这个错误: [NSConcreteNotification superview]:无法识别的选择器发送到实例 0x1702580f0
换行:
atelierFormInputCell *cell =(atelierFormInputCell *) [(UITextField*)notif superview];
所以我不知道这是进步还是更糟。
使用 atelierFormInputCell 文件更新
atelierFormInputCell.h:
@interface atelierFormInputCell : UITableViewCell {
UILabel *label;
UITextField *textInput;
NSUInteger row;
}
atelierFormInputCell.m:
@implementation atelierFormInputCell
@synthesize label, textInput, row;
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
UIColor *gris = [UIColor colorWithRed:108/255.0 green:116/255.0 blue:120/255.0 alpha:1.0];
UIColor *black = [UIColor blackColor];
UIColor *transparent = [UIColor clearColor];
label = [[UILabel alloc]init];
label.textAlignment = UITextAlignmentLeft;
label.font = [UIFont fontWithName:@"FontType-Normal" size:14.0];
label.backgroundColor = transparent;
label.textColor = gris;
label.numberOfLines = 1;
textInput = [[UITextField alloc] init];
textInput.borderStyle = UITextBorderStyleNone;
textInput.textAlignment = UITextAlignmentRight;
textInput.backgroundColor = transparent;
textInput.font = [UIFont fontWithName:@"FontType-Normal" size:14.0];
textInput.backgroundColor = transparent;
textInput.textColor = black;
textInput.returnKeyType = UIReturnKeyDone;
[self.contentView addSubview:label];
[self.contentView addSubview:textInput];
self.selectionStyle = UITableViewCellSelectionStyleNone;
}
return self;
}
【问题讨论】:
-
能否请您显示
atelierFormInputCell界面? -
@dirtydanee 已编辑答案:)
标签: ios xcode save unrecognized-selector