当我点击tableview单元格时,UITextfield没有显示文字?

时间:2013-12-02 08:23:58

标签: ios objective-c uitableview ios7 xcode5

您好朋友请解决我的问题

我有两个xib,一个xib有textfield,另一个有tableview,包含来自sqlite的数据。

当我点击tableview的单元格时,它将数据存储到字符串对象和.m文件中包含textfield的字符串对象。

但文字字段未显示文字..

我检查所有的东西,如文字颜色,背景等等......但仍有问题..

我指定简单的文字,如

  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 ... :(
}

我该怎么办??????

2 个答案:

答案 0 :(得分:2)

@ user3007462你做错了。

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

在这种情况下,你为什么再次入侵Viewcontroller? 如果您再次初始化Viewcontroller,它将创建新的intance(某个地址0x345345hfh54)。并且您没有显示Viewcontroller的新实例。只是转移到Viewcontroller

的前一个实例

因此,最好使用协议概念来实现这一目标。

答案 1 :(得分:0)

您需要在前一个视图控制器(这里是rootviewcontroller)中将字符串设置为textfield,该控制器已经创建(初始化)。

问题是你试图创建一个viewcontroller的新对象(它不是rootviewcontroller的确切对象)并设置该viewcontroller的文本字段。

在您的情况下,需要设置现有viewcontroller的文本字段

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

请参考此post