Ios UITableView需要看起来像带有在位编辑字段的联系人
我有一个UITableView,我想以与Contacts应用程序类似的方式使用它,因为它有一个编辑按钮,单击该按钮时会将单元格转换为编辑单元格 目前,它们是使用单元格样式“left detail”设置的,我已经覆盖了setEditing方法,准备好实现,但我不知道如何转换单元格 这里的一些其他回答包括“监视表视图的编辑属性何时更改(当按下“编辑”按钮时)。然后在代理方法中添加代码,以便在表视图处于编辑模式时以不同的方式组合、绘制和缩进单元格。”这正是我想要但不知道如何做的Ios UITableView需要看起来像带有在位编辑字段的联系人,ios,iphone,uitableview,ios6,Ios,Iphone,Uitableview,Ios6,我有一个UITableView,我想以与Contacts应用程序类似的方式使用它,因为它有一个编辑按钮,单击该按钮时会将单元格转换为编辑单元格 目前,它们是使用单元格样式“left detail”设置的,我已经覆盖了setEditing方法,准备好实现,但我不知道如何转换单元格 这里的一些其他回答包括“监视表视图的编辑属性何时更改(当按下“编辑”按钮时)。然后在代理方法中添加代码,以便在表视图处于编辑模式时以不同的方式组合、绘制和缩进单元格。”这正是我想要但不知道如何做的 - (void)set
- (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];
}
}
在我的方法中,我的代码是从中提取的。。排序(它会在错误的位置动态创建一个新的可编辑文本字段,并且不会隐藏标签)。
这些方法不够具体,我无法理解如何开发视图。简而言之,其工作方式是在整个
UITableView
上设置一个编辑标志,然后实现两个方法(CaneditRowatineXpath、CommittedItingStyle)在UITableViewDataSource
协议中声明,用于确定正在编辑的单元格
因此,首先需要将UITableVIew置于编辑模式。要在工具栏按钮的处理程序中执行此操作:
[self.tableView设置编辑:是动画:否]代码>
然后,tableview将调用CaneditRowatineXpath
,以确定该行是否可以编辑:
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
最后,当用户完成编辑时,将调用此方法:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
这里还有另一个例子:
我有一个解决办法
如果我创建一个自定义行并使其看起来与“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;
}
你想要什么……你能把你的问题说清楚吗。。。很抱歉,我没有得到你…我正在寻找复制联系人应用程序视图,因此当用户单击编辑时,视图中的字段将更新为可编辑字段。谢谢您在编辑tableviewcells时遇到问题??是的-使用标准的我想它们无法编辑。谢谢-删除项目很好,但我不希望这成为一个选项,我只想更改项目的文本,例如票证的标题