2011-05-18 108 views
2

我正在为iphone做一个客户端 - 服务器程序,我想使用我的serverIP,它是第一个视图中第二个视图的一部分serverIP是一个uitextfield。我用第二个视图输入ServerIP的值,但我想使用serverIP IN Firstview的值。在第一个视图中使用第二个视图的textfield

“” secondview.h “” 接口文件

#import <UIKit/UIKit.h> 


@interface secondview : UIViewController { 

    IBOutlet UIView *view; 
    IBOutlet UITextField *serverIP; 
    IBOutlet UITextField *noc; 
    IBOutlet UIButton *save; 
    IBOutlet UIButton *back; 
    IBOutlet UIButton *load; 
    IBOutlet UILabel *display1; 
} 

-(IBAction) back; 
-(IBAction) save; 
-(IBAction) load; 

@property (nonatomic,retain) IBOutlet UITextField *serverIP; 
@property (nonatomic,retain) IBOutlet UITextField *noc; 
@property (nonatomic , retain) IBOutlet UILabel *display1; 


@end 

“” secondview.m “” 实现文件

#import "secondview.h" 


@implementation secondview 


@synthesize serverIP,noc,display1; 


-(IBAction) save{ 

    [[NSUserDefaults standardUserDefaults] setInteger:serverIP forKey:@"save"]; 

    NSUserDefaults *myname = [NSUserDefaults standardUserDefaults]; 



    [serverIP resignFirstResponder]; 



} 

-(IBAction) load { 

    serverIP = [[NSUserDefaults standardUserDefaults] integerForKey:@"load"]; 

    NSUserDefaults *myname = [NSUserDefaults standardUserDefaults]; 





} 


-(IBAction) back { 

    [self.parentViewController dismissModalViewControllerAnimated: YES]; 
} 



- (void)dealloc { 
    [super dealloc]; 
} 


@end 

回答

1

既然你已经做到了这一点

[[NSUserDefaults standardUserDefaults] setInteger:serverIP forKey:@"save"]; 

我会帮你在这。首先,serverIPUITextField的一个实例。如果您按照上述方式进行操作,则不会存储保存在其中的文本值。做这个代替 -

[[NSUserDefaults standardUserDefaults] setString:serverIP.text forKey:@"serverIP"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

现在您将能够在第一个视图中访问此。你将不得不这样做 -

NSString *serverIP = [[NSUserDefaults standardUserDefaults] stringForKey:@"serverIP"]; 

另一种方法

但是使用用户默认设置可能不是正确的方式。如上所述,您可以使用应用程序委托来存储所有可能使其膨胀的值。

定义一个可以从第一个视图控制器传递给第二个视图控制器的模型对象(可变)会更好。然后,您可以修改第二个视图控制器中的模型对象,并且第一个视图控制器应该能够看到它。

我建议你在第二个视图控制器上声明一个保留属性为NSMutableString *ipAddress,您可以将其修改为[ipAddress setString:serverIP.text];。您必须在第一个视图控制器中声明一个iVar,并在将其传递给第二个视图控制器之前对其进行初始化。让我知道你是否需要额外的帮助。

+0

谢谢亲爱的我刚刚实现了你发送给我的最后一行代码,它工作。 – 2011-05-18 11:41:31

0

我会处理这个问题的方法是有一个NSString实例变量对于IP Addreesin我的应用程序代理,说

NSString *ipAddress; 

然后,您可以设置指针到应用程序委托来自您的意见:

MyAppsAppDelegate *appDelegate; 

从appDelegate.ipAddress设置UITextField,并从第二个视图进行更改。 您可能只需要通过重写viewWillAppear中方法

希望帮助

杰里米

0

使用在文本框的第一个视图代表刷新的UITextField在第一观看didend编辑

0

创建在apdelegate中设置字符串并在其中设置属性,然后将您的textfield值分配给appdelegate字符串。
的firstView

SpeakersAppDelegate *mainDelegate = (SpeakersAppDelegate *)[[UIApplication sharedApplication] delegate]; 
mainDelegate.addDelegateGlobalstring=firstviewtextFieldString; 
相关问题