0

我有一个包含 UISwitches 的 TableView。开关稍微偏离屏幕。如何正确显示。

转变

这是我显示开关的代码。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"POICell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if(!cell){

    //set the cell text to the
    cell.textLabel.text = [self.catNames objectAtIndex:[indexPath row]];
    NSString *toggle = [self.toggleArray objectAtIndex:[indexPath row]];
    //add switch
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
    cell.accessoryView = switchView;

    if ([toggle isEqualToString: @"OFF"]) {
        [switchView setOn:NO animated:NO];
    }else{
        [switchView setOn:YES animated:NO];
    }


    [switchView addTarget:self action:@selector(switchChanged: ) forControlEvents:UIControlEventValueChanged];
    // Configure the cell...

    }
    return cell;
}
4

2 回答 2

1

我不会将 UISwitch 添加到标准单元格,而是创建一个包含文本标签和开关的自定义 UITableViewCell。

但是在查看了 Apple 文档之后,您想要实现的似乎是一种有效的方法。

iOS 表视图编程指南

而且您的代码已经看起来很像这个 SO 问题:如何使用 UISwitch 创建 UITableViewCell 并获取数据? 所以我不确定为什么 UISwitch 没有按预期显示。

于 2012-11-01T17:02:33.143 回答
-1

我认为默认accessoryView的位置不能毫无问题地移动,因为TableViewCell会在很多情况下重新定位它。

因此,将其添加为子视图可​​能是更好的主意,而不是尝试“破解”默认行为。

于 2012-11-01T16:56:43.020 回答