Вот мой старый вопрос LinkОшибка программы при нажатии переключателя?
задать вопрос раньше, но я положил ответ в моем коде может компилятор без ошибок
Но когда я нажимаю выключатель, программа аварию
I просто хочу нажать на переключатель, чем возвращение в какой строке я нажимаю
Вот мой код
Сначала я создаю LightTableViewController.h/.m
Чем я создаю LightCell0.h/.m
в LightCell0.h
@interface LightCell0 : UITableViewCell {
UILabel *lightLocation;
UIImageView *lightImageView;
UISwitch *lightSwitch;
}
@property(nonatomic,retain) UILabel *lightLocation;
@property(nonatomic,retain) UIImageView *lightImageView;
@property(nonatomic,retain) UISwitch *lightSwitch;
- (void)switchlightswitch:(id)sender;
мне нужна каждая ячейка будет изображение, TextLabel, переключатель внутри
В LightCell.m
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
lightLocation = [[UILabel alloc]init];
lightLocation.textAlignment = UITextAlignmentLeft;
lightLocation.font = [UIFont boldSystemFontOfSize:20];
lightLocation.backgroundColor = [UIColor blackColor];
lightLocation.textColor =[UIColor whiteColor];
lightImageView = [[UIImageView alloc]init];
lightSwitch = [[UISwitch alloc]init];
[self.contentView addSubview:lightLocation];
[self.contentView addSubview:lightImageView];
[self.contentView addSubview:lightSwitch];
[lightSwitch addTarget:self action:@selector(switchlightswitch:) forControlEvents:UIControlEventValueChanged];
// Initialization code
}
return self;
}
- (недействительными) switchlightswitch: (id) отправитель {
if (lightSwitch.on){
lightImageView.image = [UIImage imageNamed:@"lightOn.png"];
}
else {
lightImageView.image = [UIImage imageNamed:@"lightOff.png"];
}}
- (void)layoutSubviews {
[super layoutSubviews];
CGRect contentRect = self.contentView.bounds;
CGFloat boundsX = contentRect.origin.x;
CGRect frame;
frame = CGRectMake(boundsX+10 ,0, 44, 44);
lightImageView.frame = frame;
frame = CGRectMake(boundsX+60 ,3, 150, 44);
lightLocation.frame = frame;
frame = CGRectMake(boundsX+220, 10,0,0);
lightSwitch.frame = frame ;
}
До сих пор программа может реакция, когда я изменить состояние переключателя, он будет также изменить изображение.
, но если я ставлю этот код в, я могу компилятор, чем аварии, если я прикоснусь любой переключатель
[lightSwitch addTarget:self action:@selector(switchToggled:) forControlEvents:UIControlEventValueChanged]
;
и дать Пустота
- (void)switchToggled:(id)sender {
UISwitch *theSwitch = (UISwitch *)sender;
UITableViewCell *cell = (UITableViewCell *)theSwitch.superview;
UITableView *tableView = (UITableView *)cell.superview;
NSIndexPath *indexPath = [tableView indexPathForCell:cell];
if(theSwitch.on) {
NSLog(@"You Switch On the NodeID:%i ",indexPath.row);
}
else {
NSLog(@"You Switch Off the NodeID:%i ",indexPath.row);
}
}
краш-сообщение является «Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[LightCell0 indexPathForCell:]: unrecognized selector sent to instance
»
Кто-нибудь знает, что происходит с моим кодом?
Я не уверен ....... Потому что я просто ссылку на ответ и сразу скопировать в свой код .... –
Vodkhang правильно, ваша логика/дизайн в какой-то момент является неправильным. «Супервизор» «супервизора» коммутатора - это ваша ячейка, а не таблица, как вы ожидаете, – Liam
, это не мой ответ ... просто кто-то сказал мне, что это может быть работа ... поэтому я копирую его ответ. –