怎样获得TableView中TextField.text?

hexx 2012-03-14 06:02:57
tableView的cell中有TextField,怎样在导航离开此view或编辑完TextField时,获得TextField.text的值?
...全文
348 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hexx 2012-03-19
  • 打赏
  • 举报
回复
对了,不要
field.delegate = self;
就行了。
ihefe 2012-03-17
  • 打赏
  • 举报
回复
如果是绑定组件应该不用使用代理 ,都试试吧
ihefe 2012-03-17
  • 打赏
  • 举报
回复
.h 没引用 UITextFieldDelegate
ihefe 2012-03-16
  • 打赏
  • 举报
回复
吃饭去。写全部给你看看


UITextField *textField=[[UITextField alloc] initWithFrame:CGRectMake(250, 50, 150, 22)];
textField.tag=[indexPath row];
textField.delegate=self;
textField.placeholder = @"请输入";
textField.font = [UIFont fontWithName:@"Times New Roman" size:25];
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
[cell addSubview:textField];



//第二步,实现回调函数
- (void) textFieldDidChange:(id) sender {
NSNumber *tag=[NSNumber numberWithInt:[sender tag]];
UITextField *_field = (UITextField *)sender;
NSLog(@"tag%@",tag);
NSLog(@"_field%@",[_field text]);
}
ihefe 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hexx 的回复:]

引用 6 楼 ihefe 的回复:

C/C++ code


第1种

//第一步,对组件增加监听器
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

//第二步,实现回调函数
- (void) t……
[/Quote]

textField.tag=[indexPath row];
hexx 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ihefe 的回复:]

C/C++ code


第1种

//第一步,对组件增加监听器
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

//第二步,实现回调函数
- (void) textFieldDidChange:(id) sender……
[/Quote]

我是在storyborad里直接把object框的Text Field拖过来的,应该属于自定义的cell中包含TextField作为元素吧。
哪 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{} 怎样把indexPath传过来啊?我需知道是哪行的TextField改变了。
ihefe 2012-03-16
  • 打赏
  • 举报
回复


第1种

//第一步,对组件增加监听器
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

//第二步,实现回调函数
- (void) textFieldDidChange:(id) sender {
UITextField *_field = (UITextField *)sender;
NSLog(@"%@",[_field text]);
}


第2种

textField.delegate=self;

...


- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

NSString *newString = nil;
newString = [textField.text stringByAppendingString:string];
NSLog(@"string:%@",string);
NSLog(@"newString:%@",newString);
return YES;
}


hexx 2012-03-16
  • 打赏
  • 举报
回复
ihefe的方法可行,我第一步改为

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...

UITextField *field = (UITextField *)[cell viewWithTag:101 + indexPath.row];
[field setText:[NSString stringWithFormat: @"%d",wantSearchThreadList[indexPath.row].threadCount]];
field.delegate = self;
[field addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

return cell;
}

可执行,只是
field.delegate = self;
那句有编译警告:“Passing'ViewController *const _strong' to parameter of incompatible type íd<UITextFieldDelegate>”
oulangzi 2012-03-15
  • 打赏
  • 举报
回复
textFieldDelete里面有方法,当你开始编辑时 你可以干某事,当你离开时忙你可以干某事,这个时候,你去想个办法保存你的值就行 我的理解
相奇 2012-03-15
  • 打赏
  • 举报
回复
要不设置一个成员变量。。。。。。

只要 当前页面没有呗卸载掉,还是可以访问到这个成员变量的。。。
相奇 2012-03-15
  • 打赏
  • 举报
回复
要不设置一个成员变量。。。。。。

只要 当前页面没有呗卸载掉,还是可以访问到这个成员变量的。。。
newlcc 2012-03-15
  • 打赏
  • 举报
回复
UITableViewCell* cell = [self.utvLeft cellForRowAtIndexPath:indexPath];
if (cell != nil)
{
TextField *field = (TextField*)[cell viewWithTag:CELL_TEXTFIELD];
咸清 2012-03-15
  • 打赏
  • 举报
回复
tableView的cell中有TextField
究竟是cell作为容器放置了TextField,还是自定义的cell中包含TextField作为元素?

29,041

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧