【问题标题】:UITextfield didnt shown text when i click on tableview cell?当我单击 tableview 单元格时,UITextfield 没有显示文本?
【发布时间】: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..

标签: ios objective-c uitableview ios7 xcode5


【解决方案1】:

@user3007462 你做错了。

我假设您的 Viewcontroller (SomeAddress 0x456456dffg) 是 RootViewController,Tableviewcontroller (SomeAddress 0x4563ghg5656) 是 childViewController。

在这种情况下,你为什么要再次引诱Viewcontroller? 如果你再次初始化你Viewcontroller,它将创建新的实例(一些地址0x345345hfh54)。而且您没有显示Viewcontroller 的新实例。只是移动到 Viewcontroller 的上一个实例

所以最好使用协议概念来实现这一点。

【讨论】:

  • 请告诉我如何使用...因为我比较新鲜
  • @user3007462 上面的链接应该清楚地解释了如何创建协议及其委托。在 Tableviewcontroller 中声明一个协议并声明一个委托方法。在移动到 Tableviewcontroller 时,将该委托方法分配给 Viewcontroller,并在 ViewController 类中定义 delgate 方法。在从 TableViewController 调用 PopToRootViewController 之前调用委托并在该委托中传递数据。
【解决方案2】:

您需要在已经创建(初始化)的前一个视图控制器(这里是根视图控制器)中为文本字段设置一个字符串。

问题在于您试图创建视图控制器的新对象(这不是根视图控制器的确切对象)并设置该视图控制器的文本字段。

在您的情况下,需要设置现有视图控制器的文本字段

实现此目的的一种方法是使用协议将数据传递到以前的视图控制器。

请以post 为例。

【讨论】:

    猜你喜欢
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多