Pregunta UISwitch en una celda UITableView


¿Cómo puedo insertar un UISwitch en un UITableView ¿celda? Los ejemplos se pueden ver en el menú de configuración.

Mi solución actual:

UISwitch *mySwitch = [[[UISwitch alloc] init] autorelease];
cell.accessoryView = mySwitch;

74
2017-09-22 14:03


origen


Respuestas:


Establecerlo como el accesorioView es usualmente el camino a seguir. Puedes configurarlo en tableView:cellForRowAtIndexPath:  Es posible que desee utilizar el objetivo / acción para hacer algo cuando se da la vuelta al interruptor. Al igual que:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    switch( [indexPath row] ) {
        case MY_SWITCH_CELL: {
            UITableViewCell *aCell = [tableView dequeueReusableCellWithIdentifier:@"SwitchCell"];
            if( aCell == nil ) {
                aCell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"SwitchCell"] autorelease];
                aCell.textLabel.text = @"I Have A Switch";
                aCell.selectionStyle = UITableViewCellSelectionStyleNone;
                UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
                aCell.accessoryView = switchView;
                [switchView setOn:NO animated:NO];
                [switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
                [switchView release];
            }
            return aCell;
        }
        break;
    }
    return nil;
}

- (void)switchChanged:(id)sender {
    UISwitch *switchControl = sender;
    NSLog( @"The switch is %@", switchControl.on ? @"ON" : @"OFF" );
}

186
2017-09-22 20:57



Puede agregar un UISwitch o cualquier otro control a la celda accessoryView. De esta forma, aparecerá en el lado derecho de la celda, que es probablemente lo que desea.


10
2017-09-22 14:11



if (indexPath.row == 0) {//If you want UISwitch on particular row
    UISwitch *theSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
    [cell addSubview:theSwitch];
    cell.accessoryView = theSwitch;
}

8
2017-09-22 14:34



Puede preparar la celda en Interfacebuilder, vincularla a una IBOutlet de su Viewcontroller y devolverla cuando la tabla de tareas solicite la fila correcta.

En cambio, podría crear un xib separado para la celda (nuevamente con IB) y cargarlo usando UINib en la creación de las celdas.

Finalmente, puede crear el modificador mediante programación y agregarlo a la vista de contenido o vista de accesorios de sus celdas.

Cuál de ellas le conviene depende en gran medida de lo que le gusta hacer. Si el contenido de su tabla vista es fijo (para una página de configuración, etc.), las dos primeras podrían funcionar bien, si el contenido es dinámico, preferiría la solución programática. Sea más específico en lo que le gustaría hacer, esto facilitaría la respuesta a su pregunta.


2
2017-09-22 14:13



para usuarios rápidos

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .default, reuseIdentifier: "TableIdentifer")
        let switch = UISwitch()
        cell.accessoryView = switch 
}

0
2018-04-19 18:49