tableview上的setediting = true会使cell accessoryview消失吗?

时间:2012-06-27 14:20:50

标签: objective-c ios uitableview

我在每个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 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

如果您的意思是重新排序控件下消失,您可以通过调整autoresizingMask属性将其重新定位到其他位置(如果您在代码中添加开关),或者,如果您已在IB中构建了自动调整,则以图形方式调整自动调整大小。

答案 2 :(得分:1)

是的,有办法保留它们。

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

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

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

答案 3 :(得分:0)

我认为您需要将您的uitableviewcell子类化。如果UISwitch子类的self.isEditing为YES,则以编程方式将UITableViewCell向左移动。