我有一个 UITableView,它应该只在第一部分第一行显示一个 UISwitch,但由于某种原因,开关显示在第四部分。此外,当开关打开/关闭时,一个新的 UISwitch 会出现在另一个单元格中。它的行为非常奇怪。任何帮助将不胜感激。
代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
PrettyTableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[PrettyTableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
cell.tableViewBackgroundColor = tableView.backgroundColor;
}
[cell prepareForTableView:tableView indexPath:indexPath];
cell.cornerRadius = 10;
if (indexPath.section == 0) {
if (indexPath.row == 0) {
cell.textLabel.text = @"Push Notifications";
pushNotificationSwitch = [[UISwitch alloc] init];
pushNotificationSwitch.on = pushSwitchState;
cell.accessoryView = pushNotificationSwitch;
[pushNotificationSwitch addTarget:self action:@selector(pushSwitch:) forControlEvents:UIControlEventValueChanged];
cell.userInteractionEnabled = YES;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
}
if (indexPath.section == 1) {
if (indexPath.row == 0) {
cell.textLabel.text = @"Department Based";
if (departmentBased) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
cell.userInteractionEnabled = YES;
}
if (indexPath.row == 1) {
cell.textLabel.text = @"Location Based (GPS)";
if (locationBased) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
} cell.userInteractionEnabled = YES;
}
}
if (departmentBased) {
if (indexPath.section == 2) {
if (indexPath.row == 0) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 1) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 2) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 3) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 4) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 5) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 6) {
cell.textLabel.text = @"xxxxxx";
}
}
if (indexPath.section == 3) {
if (indexPath.row == 0) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 1) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 2) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 3) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 4) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 5) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 6) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 7) {
cell.textLabel.text = @"xxxxxx";
}
if (indexPath.row == 8) {
cell.textLabel.text = @"xxxxxx";
}
}
}
return cell;
}