当我单击 tableview 单元格时,UITextfield 没有显示文本?
Posted
技术标签:
【中文标题】当我单击 tableview 单元格时,UITextfield 没有显示文本?【英文标题】:UITextfield didnt shown text when i click on tableview cell? 【发布时间】:2013-12-02 08:23:57 【问题描述】:你好朋友请解决我的问题
我有两个 xib ,一个 xib 有文本字段,另一个有 tableview 包含来自 sqlite 的数据。
当我单击 tableview 的单元格时,它会将数据存储到字符串对象中,并且该字符串对象在包含文本字段的 .m 文件中使用。
但文本字段未显示文本..
我检查了所有的东西,比如文字颜色、背景等等……但还是有问题……
我分配简单的文本,如
nametextfield.text=@"hello";
但是上面的代码也没有工作。
我在应用程序中的真正编码在这里:
//tableviewcontroller.m
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
cell.textLabel.text=[[data objectAtIndex:indexPath.row] valueForKey:@
"name"];
cell.detailTextLabel.text=[[data objectAtIndex:indexPath.row]
valueForKey:@"salary"];
return cell;
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
ViewController *vc=[[ViewController alloc]init];
nameStr =[[data objectAtIndex:indexPath.row] valueForKey:@"name"];
salaryStr=[[data objectAtIndex:indexPath.row] valueForKey:@"salary"];
NSLog(@"%@ %@",nameStr,salaryStr); //i got the value here
[vc fillTextfield:nameStr:salaryStr];
[self.navigationController popToRootViewControllerAnimated:YES];
//viewcontroller.m
-(void)fillTextfield:(NSString*)nm:(NSString*)sal
NSLog(@"string : %@ %@ ",nm,sal);// i also got the value here
name.text=nm;
salary.text=sal;
//but after this code textfield not shown the text ... :(
我该怎么办??????
【问题讨论】:
显示你是如何定义 UITextfield 的代码? 直接把uitextfield放到xib文件中 也做了引用出口和委托 然后显示CellforRowAtIndexPath的代码? 在 CellforRowAtIndexPath 处为 textField 添加委托,并将 UitableViewCellSelection 禁用为 none.. 【参考方案1】:@user3007462 你做错了。
我假设您的 Viewcontroller
(SomeAddress 0x456456dffg
) 是 RootViewController,Tableviewcontroller
(SomeAddress 0x4563ghg5656
) 是 childViewController。
在这种情况下,你为什么要再次引诱Viewcontroller
?
如果你再次初始化你Viewcontroller
,它将创建新的实例(一些地址0x345345hfh54
)。而且您没有显示Viewcontroller
的新实例。只是移动到 Viewcontroller
的上一个实例
所以最好使用协议概念来实现这一点。
【讨论】:
请告诉我如何使用...因为我比较新鲜 检查这个***.com/questions/6168919/… 还有这个***.com/questions/10578281/… @user3007462 上面的链接应该清楚地解释了如何创建协议及其委托。在 Tableviewcontroller 中声明一个协议并声明一个委托方法。在移动到 Tableviewcontroller 时,将该委托方法分配给 Viewcontroller,并在 ViewController 类中定义 delgate 方法。在从 TableViewController 调用 PopToRootViewController 之前调用委托并在该委托中传递数据。【参考方案2】:您需要在已经创建(初始化)的前一个视图控制器(这里是根视图控制器)中为文本字段设置一个字符串。
问题在于您试图创建视图控制器的新对象(这不是根视图控制器的确切对象)并设置该视图控制器的文本字段。
在您的情况下,需要设置现有视图控制器的文本字段
实现此目的的一种方法是使用协议将数据传递到以前的视图控制器。
请以post 为例。
【讨论】:
以上是关于当我单击 tableview 单元格时,UITextfield 没有显示文本?的主要内容,如果未能解决你的问题,请参考以下文章
单击 Tableview 单元格时使用哪种方法更新 Rest Api 数据
当我点击 2 个 TableView 控制器之间的“didSelectRowAt indexPath”中的单元格时,我需要执行后退按钮操作