我有这种情况,我有4个观点。 V1,V2,V3,V4。
我正在查看v1,当我按下任何单元格将它带到另一个视图v2时,这是表格视图。精细。
然后在v2中我有一些textFields和按钮B2。当我按下按钮B2(我已经在其方法中设置了保存textField数据和pushViewController功能)时,它将我带到v3。
我在v3中也有一个按钮以及B3。此按钮将数据保存在v3上,并带我查看4,即v4。
在v4中,显示了v2和v3的所有文本字段。 我没有问题。但是当我按下导航键回到barbutton时,它从v4开始转到v3。但是现在当我改变textField值并再次按下v3上的按钮时它什么也没做。就好像再次按下导航栏按钮,即后退按钮它需要我v2而按钮B2什么都不做。
任何人都可以帮我解决这个问题。
-(IBAction)buttonPress:(id)sender{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:field1.text forKey:@"field1Key"];
[defaults setObject:field2.text forKey:@"field2Key" ];
[defaults synchronize];
if (co==nil) {
co=[[class4 alloc]initWithNibName:nil bundle:nil];
co.name=field1.text; co.phone=field2.text;
[self.navigationController pushViewController:co animated:YES ];
[co release];
} –
}
答案 0 :(得分:1)
//do like this to all viewcontrollers action
-(IBAction)buttonPress:(id)sender{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:field1.text forKey:@"field1Key"];
[defaults setObject:field2.text forKey:@"field2Key" ];
[defaults synchronize];
if (co==nil) {
co=[[class4 alloc]initWithNibName:@"class4" bundle:nil];
co.name=field1.text;
co.phone=field2.text;
[self.navigationController pushViewController:co animated:YES ];//updated
[co release];
}
else {
[self.navigationController pushViewController:co animated:YES ];
[co release];
}
}
//注意这一行co = [[class4 alloc] initWithNibName:@“class4”bundle:nil];
答案 1 :(得分:1)
您正在if (co ==nil)
块内推送ViewControllers。在第一次导航期间,视图控制器实际上是零,因此它工作。如果您向后导航并再次按下按钮,它将无法工作 - 这是有道理的!
您应该推送视图控制器是否为nil
。你可以这样做。
if (co==nil) {
co=[[class4 alloc]initWithNibName:nil bundle:nil];
}
co.name=field1.text; co.phone=field2.text;
[self.navigationController pushViewController:co animated:YES ];
[co release];
或在检查之前制作co=nil
。
co = nil;
if (co==nil) {
co=[[class4 alloc]initWithNibName:nil bundle:nil];
co.name=field1.text; co.phone=field2.text;
[self.navigationController pushViewController:co animated:YES ];
[co release];
} –
答案 2 :(得分:0)
我找到了问题的答案。
-(IBAction)buttonPress:(id)sender{
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults]; [defaults
setObject:field1.text forKey:@"field1Key"]; [defaults setObject:field2.text
forKey:@"field2Key" ]; [defaults synchronize]; if (co==nil) { co=[[class4
alloc]initWithNibName:nil bundle:nil]; co.name=field1.text; co.phone=field2.text;
[self.navigationController pushViewController:co animated:YES ];
[self.navigationController pushViewController:co animated:YES ];[co release]; } co=nil;
//This point to be noted. }