您好朋友请解决我的问题
我有两个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 ... :(
}
我该怎么办??????
答案 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。