gpt4 book ai didi

ios MasterDetail 应用程序 : UITextField in tableview not work

转载 作者:行者123 更新时间:2023-11-29 03:21:48 26 4
gpt4 key购买 nike

我在 ios 中有一个主要细节应用程序,使用 SDK 7.0,Xcode 5,使用 ARC。

master有很多item,detail有表格 View 。当我点击一个项目时,tableview 的内容会发生变化。在我将 UITextField 放入每个单元格之前,这种方法一直有效,因为我想编辑表格中的内容。

问题是:当我点击一个新的项目时,旧的内容并没有消失,所以一个单元格的内容是新的 UITextField 的文本和旧的 UITextField 的文本的叠加。

第一个普通的tableview是这样的: enter image description here

当我点击一个新项目后,tableview 会像这样: enter image description here

master的代码片段是:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
LHBPoetry *poetry = poetryArray[indexPath.row];
self.detailViewController.poetryId = poetry.poetryId;
}

我在上面的方法中尝试了很多东西,例如,我让细节 View Controller 的所有实例都为零; TableView 的数据数组 removeAllObjects; TableView 重新加载数据;它无法解决问题。

详细的片段是:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"detailCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];


UITextField *textField = textField = [[UITextField alloc] initWithFrame:
CGRectMake(90, 12, 200, 25)];


textField.tag = indexPath.row;
textField.text =_sentenceArray[indexPath.row];

textField.clearsOnBeginEditing = NO;
textField.delegate = self;
textField.returnKeyType = UIReturnKeyDone;

[textField addTarget:self
action:@selector(textFieldDone:)
forControlEvents:UIControlEventEditingDidEnd];

[cell.contentView addSubview:textField];

textField.text = _sentenceArray[indexPath.row];

return cell;
}

我在 Main.storyborad 中绘制了这个 tableview,它有一个带有标识符的原型(prototype)单元格。

我们将不胜感激。

最佳答案

k 有件事我想告诉你,因为你一直在为重复使用的单元格添加文本字段,单元格中没有一个文本字段..:) 有不止一个文本字段,因为你是相互重叠,我认为你正在使用默认的“master-detail”应用程序,并对其进行修改..:)

好的,你需要像下面这样修改

在主 Controller 中

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if(cell == nil)
{
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(2, 3, 300, 30)];
[textField addTarget:self action:@selector(textFieldDone:) forControlEvents:UIControlEventEditingDidEnd]; //hear u are adding once initially
textField.tag = 100;
[cell addSubview:textField];
}


NSString *object = _objects[indexPath.row];//_objects is mutable array holding the sentences or names
UITextField *textField = (UITextField *)[cell viewWithTag:100];//after that u are reusing the textfields
textField.text = object;
textField.tag = indexPath.row;
return cell;
}


现在您正在创建您不希望原型(prototype)单元将其从 Storyboard 中删除的单元

在上面你删除了自定义单元格,因为你正在自己的代码中创建单元格

现在在方法中


  - (void) textFieldDone:(UITextField *)inTextFIeld
{
int index = inTextFIeld.tag;
[_objects replaceObjectAtIndex:index withObject:[inTextFIeld text]];
[self.masterTableVIew reloadData];//made connection to ur tableview

}


关于ios MasterDetail 应用程序 : UITextField in tableview not work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com