Я довольно новичок в Objective-C и программировании iPhone / iPad в целом.
Я работаю над группой моей программы, которая ведет список пользователей, хранящихся в базе данных sqlite3.Я пытаюсь перебрать список пользователей и программно добавить UILabel, UISwitch и UIButton в UIScrollView.
Я пытаюсь сохранить индекс соответствующей кнопки удаления в теге UISwitch Iгенерируюсь динамически.Кнопка удаления должна появляться, когда переключатель выключен.
Для этого у меня есть следующее:
-(IBAction)switchValueChange:(id)sender{
UISwitch *_switch = (UISwitch *)sender;
UIButton *btnDelete = (UIButton *)[DeleteList objectAtIndex:_switch.tag];
if(_switch.on) {
[btnDelete setHidden:YES];
} else {
[btnDelete setHidden:NO];
}
}
-(void) loadUsers {
//Create User List
NSMutableArray *nsa;
float yOffset = 30.0f;
int iIndex = 0;
for(nsa in [dataLib getUsers]) {
//Create user's Name Label
UILabel *lblUserName = [[UILabel alloc] initWithFrame:CGRectMake(20, yOffset, 400, 20)];
lblUserName.text = [NSString stringWithFormat:@"%@, %@", [nsa objectAtIndex:2], [nsa objectAtIndex:1]];
lblUserName.backgroundColor = [UIColor clearColor];
lblUserName.textColor = [UIColor whiteColor];
[svUserList addSubview:lblUserName];
[lblUserName release];
//Create Active Switch
UISwitch *swActive = [[UISwitch alloc] initWithFrame:CGRectMake(440, yOffset, 200, 20)];
[swActive addTarget:self
action:@selector(switchValueChange:)
forControlEvents:UIControlEventValueChanged];
[swActive setOn:[[nsa objectAtIndex:6] boolValue]];
swActive.tag = iIndex;
[svUserList addSubview:swActive];
//Create Delete User Button
UIButton *btnDelete = [[UIButton alloc] initWithFrame:CGRectMake(660, yOffset, 100, 20)] ;
[btnDelete setTitle:@"Delete" forState:UIControlStateNormal];
[btnDelete setTitle:@"Delete" forState:UIControlStateHighlighted];
[btnDelete setBackgroundColor:[UIColor redColor]];
[btnDelete setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
[btnDelete setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];
[btnDelete setTag:[[nsa objectAtIndex:0] intValue]];
[btnDelete setHidden:swActive.on];
[svUserList addSubview:btnDelete];
[btnDelete release];
iIndex++;
yOffset += 25;
}
}
Перо загружается в симулятор, но когда я переключаю его, онвыдает ошибку SIGABRT и говорит:
[__NSCFDictionary switchValueChange]: unrecognized selector sent to instance 0x6a9a070
Я потратил почти 5 часов, пытаясь выяснить это, и я нахожусь в конце.Если у кого-то есть представление о том, что я делаю неправильно, или о том, как лучше показать это, я очень ценю это понимание.