UITableView需要看起来像联系人与编辑的位置字段
我有一个UITableView,我想以与联系人应用程序类似的方式工作,有一个编辑按钮,单击时将单元格转换为编辑单元格。UITableView需要看起来像联系人与编辑的位置字段
目前,它们是使用单元格样式'left detail'设置的,我已经覆盖了setEditing方法,可以实现,但我不知道如何转换单元格。
这里的一些其他答案包括:“监视表视图的编辑属性是否发生变化(当按下Edit按钮时)。然后将代码添加到委托方法中,以便以不同方式组合,绘制和缩进单元格视图处于编辑模式。“这正是我想要的,但不知道该怎么做。
- (void)setEditing:(BOOL)flag animated:(BOOL)animated {
[super setEditing:flag animated:NO];
if (flag == YES){
// Change views to edit mode.
self.textField = [[UITextField alloc] initWithFrame:[_titleLabel frame]];
[self.textField setText:_titleLabel.text];
[self.view addSubview:self.textField];
}
else {
// Save the changes if needed and change the views to noneditable.
[_titleLabel setText:self.textField.text];
[self.textField removeFromSuperview];
}
}
在我的方法我已经从another question该工程..之类的(它使在错误的地方飞新的可编辑文本字段,并不会隐藏标签)采取代码。
的apple guidelines是不够具体,我明白如何发展的意见。
回答:
我有一种变通方法。
如果我创建一个自定义行并使其看起来与'left detail'风格相同,但是在右侧使用textview而不是标签,则可以更改“seteditable”和“setenabled”字段视图,以便在编辑时允许编辑。我点击了字体颜色,以便在单击编辑时发生变化,以便用户可以看到它现在可以编辑。
这似乎很杂乱 - 所以我仍然在寻找最好的方法来做到这一点。
- (void)setEditing:(BOOL)flag animated:(BOOL)animated {
[super setEditing:flag animated:NO];
if (flag == YES){
[self.tableView setEditing:YES animated:NO];
[self.sampleLabel setEnabled:YES];
[self.sampleLabel setTextColor:[UIColor blackColor]];
}
else {
[self.sampleLabel setEnabled:NO];
[self.sampleLabel setTextColor:[UIColor darkGrayColor]];
}
}
- (void)configureView
{
self.titleLabel.text = [[self.detailItem valueForKey:@"title"] description];
self.ticketNumberLabel.text = [[self.detailItem valueForKey:@"reference"] description];
self.detailsLabel .text = [[self.detailItem valueForKey:@"details"] description];
self.sampleLabel.text = [[self.detailItem valueForKey:@"reference"] description];
// initially set labels to not be editable
[self.detailsLabel setEditable:NO];
[self.sampleLabel setEnabled:NO];
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
// item can't be deleted now
return NO;
}
回答:
简而言之,它的工作方式是在整个UITableView
上设置编辑标志,然后实现几个在UITableViewDataSource
协议中声明的确定正在编辑哪些单元格的方法(canEditRowAtIndexPath,commitEditingStyle)。
所以首先您需要将UITableVIew置于编辑模式。你想要做的是,在处理您的工具栏按钮:
[self.tableView setIsEditing:YES animated:NO];
然后,tableview中会调用canEditRowAtIndexPath
,以确定是否该行可以编辑:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
最后,当用户做编辑,调用此方法:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html
这里有一个例子:
http://www.behindtechlines.com/2012/06/02/enabling-configuring-uitableview-edit-mode/
以上是 UITableView需要看起来像联系人与编辑的位置字段 的全部内容, 来源链接: utcz.com/qa/259583.html