3

我在每个 tableview 单元格上都有一个 UISwitchView,并希望允许对单元格进行重新排序。问题是当我在表格视图上设置 setEditing=true 时,附件(switchview)消失了。有没有办法同时保留?

编辑

static NSString *CellIdentifier = @"Edit Sources Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell...
NSUInteger row = [indexPath row];
Source *source = [self.sources objectAtIndex:row];

cell.textLabel.text = source.name;

UISwitch *switchView = [[UISwitch alloc] initWithFrame:CGRectZero];
switchView.tag = row;
cell.accessoryView = switchView;
[switchView setOn:source.switchedOn animated:NO];
[switchView addTarget:self action:@selector(switchChangedForSource:)  forControlEvents: UIControlEventValueChanged] ;
4

4 回答 4

5

UITableViewCell 有一个附加属性 ,editingAccessoryView用于在单元格处于编辑模式时显示的视图。

我不知道您是否可以将相同的 UISwitch 实例分配给accessoryViewandeditingAccessoryView属性,或者您是否需要创建两个实例。(一个视图一次只能有一个父视图,但 UITableViewCell 实际上是在做显示视图的工作,所以它可能足够聪明来处理这种情况。)

于 2012-06-27T14:51:31.773 回答
2

是的,有办法保留它们。

您应该制作一个自定义单元格视图您可以将每个 UI 元素添加到此自定义单元格,包括切换视图(或其他任何内容),并且当您将表格的编辑设置为 true 时,您不会有问题,因为在自定义单元格上查看 UI 元素不会消失。

标准表格单元格的 UI 元素不是由您控制的,这就是为什么您只能同时看到其中一个内置附件的原因。当您使用自定义单元格视图时,它永远不会发生。

我希望您熟悉自定义单元格视图,但如果您不熟悉,我也可以提供确切的代码,但想法就是这样。

于 2012-06-27T14:39:11.843 回答
1

如果您的意思是它在重新排序控件消失了,如果您在代码中添加开关,则可以通过调整属性将其重新定位到不同的位置autoresizingMask,或者如果您在 IB 中构建它,则可以通过图形方式调整 Autosizing。

于 2012-06-27T14:26:41.707 回答
0

我认为您需要将您的表格视图单元格子类化。如果您的子类为 YES,则以编程方式将UISwitch向左移动。self.isEditingUITableViewCell

于 2012-06-27T14:25:34.613 回答