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

时间:2011-08-06 13:19:43

标签: iphone

我有这种情况,我有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];
} –

}    

3 个答案:

答案 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. }