视图和按钮iPhone应用程序出现问题



我有这个场景,我有4个视图。v1、v2、v3、v4.

我在视图v1中,这是表视图。当我按下任何单元格时,它会将我带到另一个视图v2。好的

然后在v2中,我有一些textFields和按钮B2。当我按下按钮B2(我已经在其方法中设置了保存textField数据和pushViewController函数(时,它会将我带到v3。

我在v3和B3中都有一个按钮。此按钮保存v3上的数据,并带我查看4,即v4。

在v4中,显示了v2和v3的所有文本字段。我没有问题。但当我按下导航后退按钮时,它会将我从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];
} –
}    

您正在将ViewControllers推送到if (co ==nil)块内部。在第一次导航期间,视图控制器实际上为零,因此它起了作用。如果你向后导航并再次按下按钮,它将不起作用——这是有道理的!

无论是否为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];
} –
//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];

我找到了问题的答案。

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

最新更新