Как я могу встроить UISwitch в статический UITableView?
Я видел этот вопрос:
Но, похоже, он имел дело с динамической страницей. На самом деле я просто пытаюсь создать страницу настроек для моего приложения и несколько ячеек в таблице (не все), требуют переключателей на ячейке таблицы. Как я мог это сделать?
4 ответа
Просто перетащите переключатель UIS на ячейку, которую вы выложили. Затем вы можете использовать вспомогательный редактор (что здорово), чтобы подключить его к родительскому классу. Один совет, который я дам вам, если вы планируете несколько ячеек, которые будут похожи по внешнему виду, создайте первую в разделе и расположите ее правильно, тогда вы можете увеличить количество строк в этом разделе, и IB создаст копии существующего ряда для вас.
Вот как это работает в Интерфейсном Разработчике. Нет необходимости в коде.
Перетащите переключатель UIS в свой View Controller. Это должно быть за пределами основного вида. Вроде просто отдыхаю там с некоторыми другими вещами.
Удерживая клавишу Ctrl, щелкните ячейку табличного представления, в которой должен быть этот переключатель, и перетащите его на новый переключатель. Смотрите 1.
Подключите коммутатор к выходу аксессуара View ячейки табличного представления. Смотрите 2.
Запустите приложение и посмотрите, как в таблице появился переключатель - готово!
Примечание: как ни странно, переключатель не отображается в Интерфейсном конструкторе. Но он появится, когда вы запустите приложение
Если вы также хотите подключить его к переменной экземпляра - например, чтобы позже можно было прочитать его свойство "on" - подключите его к розетке, как при любом другом представлении 3, 4.
PS: Имейте в виду, что состояние включения / выключения UISwitch находится в свойстве "включено", а не "выбрано". Я просто добавляю это, потому что это немного сбивает с толку.
PPS: простите за увеличенный пиксель, я на экране сетчатки.
Я создаю функцию для этого случая, и она хорошо работает для меня... попробуйте, сначала при создании ячейки вы можете проверить строку, которую хотите добавить. UISwitch
в, например,
if(indexPath.row == 0)
[self createOnOffView:cell withTitle:@"Somthing" withTag:1001 defaultVal:YES];
И функция есть:
- (void) createOnOffView:(UITableViewCell*) cell withTitle:(NSString*) title withTag:(int)tag defaultVal:(BOOL) defaultVal
{
CGRect rect;
cell.textLabel.text = title;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
rect = cell.contentView.frame;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
rect.origin.x = cell.frame.size.width - 20;
else
rect.origin.x = rect.size.width/2 +35;
rect.origin.y = rect.size.height/2 - 15;
rect.size.width = 60;
UISwitch *switchView = [[UISwitch alloc] initWithFrame:rect];
[cell.contentView addSubview:switchView];
[switchView addTarget:self action:@selector(didChangeSwitch:) forControlEvents:UIControlEventValueChanged];
switchView.tag = tag;
[switchView setOn:defaultVal];
[switchView release];
}
И когда значение переключателя меняется, этот метод будет запущен.. так что вы можете знать, какой переключатель на основе тега
- (void) didChangeSwitch:(UISwitch*)switchView
{
if(switchView.tag == 1001)
{
//Do Somthing
}
if(switchView.tag == 1002)
{
//Do Somthing
}
}
Надеюсь, это будет полезно:)
Вы делаете это точно так же, как и в вопросе, с которым вы связаны. Не существует такой вещи, как "динамическая" таблица. Таблица просто отображает вашу модель. Ваша модель может быть динамичной, но табличное представление - нет. В любом случае, следуйте ответу на этот вопрос, и у вас будет переключатель в виде таблицы.