当我单击 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 数据

单击tableview单元iphone时如何更改图像

在单击表格单元格时推送新视图,这怎么可能? [关闭]

当我点击 2 个 TableView 控制器之间的“didSelectRowAt indexPath”中的单元格时,我需要执行后退按钮操作

如何在 ipad 中的 tableview 单元格上显示弹出框单击

当我在按钮操作上从 TableView 中删除单元格时,应用程序崩溃了 - iOS Swift