我正在为iphone制作一个客户端服务器程序,我想使用我的serverIP,这是我在第一个视图服务器中的第二个视图的一部分.IP是一个uitextfield。我用来在第二个视图中输入ServerIP的值,但我想使用serverIP IN Firstview的值。
“”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
答案 0 :(得分:1)
因为你已经完成了这个
[[NSUserDefaults standardUserDefaults] setInteger:serverIP forKey:@"save"];
我会帮助你。首先,serverIP
是UITextField
的一个实例。如果您执行上述操作,则不会存储其中包含的文本值。这样做 -
[[NSUserDefaults standardUserDefaults] setString:serverIP.text forKey:@"serverIP"];
[[NSUserDefaults standardUserDefaults] synchronize];
现在您可以在第一个视图中访问它。你必须这样做 -
NSString *serverIP = [[NSUserDefaults standardUserDefaults] stringForKey:@"serverIP"];
替代方法
但是,使用用户默认值可能不是正确的方法。如上所述,您可以使用应用程序委托来存储可能使其膨胀的所有此类值。
最好定义一个可以从第一个传递给第二个视图控制器的模型对象(可变)。然后,您可以在第二个视图控制器中修改模型对象,第一个视图控制器应该能够看到它。
我建议您将第二个视图控制器上的保留属性声明为NSMutableString *ipAddress
,您可以将其修改为[ipAddress setString:serverIP.text];
。您必须在第一个视图控制器中声明一个iVar并在将其传递给第二个视图控制器之前对其进行初始化。如果您需要其他帮助,请与我们联系。
答案 1 :(得分:0)
我接近这个的方法是为我的应用程序代表中的IP Addrees创建一个NSString实例变量,比如说
NSString *ipAddress;
然后,您可以从两个视图中设置指向App Delegate的指针:
MyAppsAppDelegate *appDelegate;
从appDelegate.ipAddress设置UITextField并从第二个视图更改。 您可能只需要通过覆盖viewWillAppear方法刷新第一个视图中的UITextField
希望有所帮助
杰里米
答案 2 :(得分:0)
在文本字段编辑的第一个视图中使用代理
答案 3 :(得分:0)
在apdelegate中创建一个字符串并在其中设置属性,然后将 textfield 值分配给appdelegate字符串。
比如 firstview
SpeakersAppDelegate *mainDelegate = (SpeakersAppDelegate *)[[UIApplication sharedApplication] delegate];
mainDelegate.addDelegateGlobalstring=firstviewtextFieldString;