Как я могу встроить UISwitch в статический UITableView?

Я видел этот вопрос:

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
    }    
}

Надеюсь, это будет полезно:)

Вы делаете это точно так же, как и в вопросе, с которым вы связаны. Не существует такой вещи, как "динамическая" таблица. Таблица просто отображает вашу модель. Ваша модель может быть динамичной, но табличное представление - нет. В любом случае, следуйте ответу на этот вопрос, и у вас будет переключатель в виде таблицы.

Другие вопросы по тегам