切换到控制唯一的表格视图单元格

时间:2014-10-23 04:52:00

标签: ios objective-c uitableview

我只是在我的单元格中添加了一个开关,我想让每个开关获取nique cell的信息并控制唯一的单元格。我的代码如下:

cellForRowAtIndexPath的方法中我创建了一个开关

 UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
        cell.accessoryView = switchView;
        [switchView setOn:NO animated:NO];
[switchView addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];

然后我写了切换方法。它一切正常,但我无法获得切换的单元格

- (void) switchChanged:(id)sender withIdentifier:(NSString*)locationName{
    UISwitch* switchControl = sender;
    if (switchControl.on) {
        NSIndexPath *indexPath = [self.AlarmsTableView indexPathForCell:cell];
        NSLog(@"the switch is on for row number: %d",indexPath.row);
    }
    else{
        NSLog(@"switch off");
    }
}

4 个答案:

答案 0 :(得分:0)

你必须在这里使用标签的概念。 给交换机一个标签,通常是单元索引路径

switchView.tag=indexPath.row;

并在您的函数中使用标记

int switchTag=[sender tag];

这将是你的手机

NSIndexPath *myIP = [NSIndexPath indexPathForRow:switchTag inSection:0] ;
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:myIP];

答案 1 :(得分:0)

cellForRowAtIndexPath

中添加此行
switchView.tag = indexPath.row;

在切换事件方法中执行以下操作:

UISwitch *tswitch = (UISwitch *)sender;
//tswitch.tag; is your row.

如果tableView中有一个部分,请执行以下操作:

NSIndexPath *myIP = [NSIndexPath indexPathForRow: tswitch.tag inSection:0] ;
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath: myIP];

答案 2 :(得分:0)

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Your SwitchView 

    switchView.tag = indexPath.row; 
}

-(void) switchChanged:(id)sender withIdentifier:(NSString*)locationName
{
    UISwitch* switchControl = (UISwitch *)sender;

    if(switchControl.on) 
    {
        //NSIndexPath *indexPath = [self.AlarmsTableView indexPathForCell:cell];
        NSLog(@"the switch is on for row number: %d",switchControl.tag);
    }
    else
    {
       NSLog(@"switch off");
    }
}

答案 3 :(得分:0)

我谦卑地不同意"标签" -solution。如果你只有一个部分,它确实有效,但它并不是最好的部分"溶液

你应该改为UITableViewCell的子类并在那里进行切换。然后细胞"处理"交换机,最好告诉它的委托(你自己创建,并设置为处理tableView的ViewController)

  

switchChangedTo:(BOOL)onOrOff forCell:(YourSubclassCell*)cell

然后,您可以通过tableView-method indexPathForCell

轻松确定单元格的索引路径