Iphone 如何将UITextField中的值从一个VC传递到另一个VC中的字符串?
我在谷歌上搜索过这个,甚至在很多论坛上搜索过,也尝试过Singleton等,但每次我的第二个VC'c字符串都返回空值 RETRIEVALTVC是我的VC,其中我期望值,而IRTViewController是我的VC,它有文本字段 我已经导入了所有的头文件 这是我的检索 检索tvc.hIphone 如何将UITextField中的值从一个VC传递到另一个VC中的字符串?,iphone,ios,cocoa-touch,Iphone,Ios,Cocoa Touch,我在谷歌上搜索过这个,甚至在很多论坛上搜索过,也尝试过Singleton等,但每次我的第二个VC'c字符串都返回空值 RETRIEVALTVC是我的VC,其中我期望值,而IRTViewController是我的VC,它有文本字段 我已经导入了所有的头文件 这是我的检索 检索tvc.h #import<UIKit> NSString *string; @property (nonatomic, copy) NSString *string; #import<UIKit>
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
#import<UIKit>
@interface
NSString *string;//comment this line ..this line is not required.
@property (nonatomic, copy) NSString *string;
@end
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
-(IBAction)getValue:(NSString *)val;
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
这是我的IRTViewController
IRTViewConroller.h
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
@property (nonatomic, assign) id target;
-(IBAction)search:(id)sender //Action when Button is Pressed
IRTViewController.m
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve = [[RetrievalTVC alloc]init];
retrieve.string = searchTrain.text;
//Here when i used NSLog its returning the value
-(IBAciton)search:(id)sender{
RetrievalTVC *retriv = [[RetrievalTVC alloc]init];
[retrieve getValue:searchTrain.text];
retrieve.string = searchTrain.text;
@synthesize target;
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve =target;
retrieve.string = searchTrain.text;
}
请帮忙。。百万元提前感谢:)您在检索类中创建了字符串的属性还是分配了它?您在检索类中创建了字符串的属性还是分配了它?您的字符串未初始化 在RetrievalTVC.m的init中初始化它。它将解决这个错误 最好把它变成一个财产 编辑:执行此操作。 检索tvc.h
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
#import<UIKit>
@interface
NSString *string;//comment this line ..this line is not required.
@property (nonatomic, copy) NSString *string;
@end
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
-(IBAction)getValue:(NSString *)val;
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
并在现有代码中更新:
- (void)viewDidLoad
{
[super viewDidLoad]; // the list method is not required
}
现在它将工作您的字符串未初始化 在RetrievalTVC.m的init中初始化它。它将解决这个错误 最好把它变成一个财产 编辑:执行此操作。 检索tvc.h
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
#import<UIKit>
@interface
NSString *string;//comment this line ..this line is not required.
@property (nonatomic, copy) NSString *string;
@end
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
-(IBAction)getValue:(NSString *)val;
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
并在现有代码中更新:
- (void)viewDidLoad
{
[super viewDidLoad]; // the list method is not required
}
现在它可以工作了您必须在
RetrievalTVC
中创建属性,如:
RetrievalTVC.h
@property (weak, nonatomic) NSString *string;
并在RetrievalTVC.m文件中对其进行合成 您必须在
RetrievalTVC
中创建属性,如:
RetrievalTVC.h
@property (weak, nonatomic) NSString *string;
并在RetrievalTVC.m文件中对其进行合成 我认为您的
检索的范围可能是错误的
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve = [[RetrievalTVC alloc]init];
retrieve.string = searchTrain.text;
//Here when I used NSLog its returning the value
NSLog(@"%@",retriv.string);
如果这是正确的,您应该在使用retrieve.string
可能这个检索
不等于检索
我认为您的检索
的范围可能是错误的
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve = [[RetrievalTVC alloc]init];
retrieve.string = searchTrain.text;
//Here when I used NSLog its returning the value
NSLog(@"%@",retriv.string);
如果这是正确的,您应该在使用retrieve.string
可能这个retrieve
不等于retrieve
我认为您可能在合成变量RetrievalTVC.m类文件时丢失了
将属性更改为:
@property (nonatomic, copy) NSString *string;
致:
如果所有的解决方案都不起作用,那么您为什么不喜欢使用委托变量(即全局变量)来实现呢
看看这个,它会解决你的问题:
我认为您可能在合成变量RetrievalTVC.m类文件时丢失了
将属性更改为:
@property (nonatomic, copy) NSString *string;
致:
如果所有的解决方案都不起作用,那么您为什么不喜欢使用委托变量(即全局变量)来实现呢
看看这个,它会解决你的问题:
您应该这样编写代码
检索tvc.h
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
#import<UIKit>
@interface
NSString *string;//comment this line ..this line is not required.
@property (nonatomic, copy) NSString *string;
@end
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
-(IBAction)getValue:(NSString *)val;
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
IRTViewConroller.h
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
@property (nonatomic, assign) id target;
-(IBAction)search:(id)sender //Action when Button is Pressed
IRTViewController.m
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve = [[RetrievalTVC alloc]init];
retrieve.string = searchTrain.text;
//Here when i used NSLog its returning the value
-(IBAciton)search:(id)sender{
RetrievalTVC *retriv = [[RetrievalTVC alloc]init];
[retrieve getValue:searchTrain.text];
retrieve.string = searchTrain.text;
@synthesize target;
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve =target;
retrieve.string = searchTrain.text;
}
您应该这样编写代码
检索tvc.h
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
#import<UIKit>
@interface
NSString *string;//comment this line ..this line is not required.
@property (nonatomic, copy) NSString *string;
@end
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
-(IBAction)getValue:(NSString *)val;
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
IRTViewConroller.h
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
@property (nonatomic, assign) id target;
-(IBAction)search:(id)sender //Action when Button is Pressed
IRTViewController.m
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve = [[RetrievalTVC alloc]init];
retrieve.string = searchTrain.text;
//Here when i used NSLog its returning the value
-(IBAciton)search:(id)sender{
RetrievalTVC *retriv = [[RetrievalTVC alloc]init];
[retrieve getValue:searchTrain.text];
retrieve.string = searchTrain.text;
@synthesize target;
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve =target;
retrieve.string = searchTrain.text;
}
使用@property(非原子,强)NSString*string
而不是@property(非原子,复制)NSString*string代码>
还可以使用@property(强,非原子)IBOutlet UITextField*searchTrain代码>改为“@property(week,非原子)IBOutlet UITextField*searchTrain
好的,我发现了错误
不需要viewDidLoad
中的alloc
字符串。这里发生的情况是,您在字符串中设置值,然后推送视图viewdiload
调用并重新分配它,因此该值为nil使用@属性(非原子,强)NSString*string
而不是@property(非原子,复制)NSString*string代码>
还可以使用@property(强,非原子)IBOutlet UITextField*searchTrain代码>改为“@property(week,非原子)IBOutlet UITextField*searchTrain
好的,我发现了错误
不需要viewDidLoad
中的alloc
字符串。这里发生的情况是,您在字符串中设置值,然后推送视图viewdiload
调用并重新分配它,因此该值为nil方法名称可能拼写错误
理解力
- IRTViewController-它有文本字段,此值需要
转到RETRIEVALTVC
案例1。RETRIEVALTVC有一个IRTViewController的对象,请使用委托。
案例2。当用户仅点击按钮时,您将在IRTViewController中创建RETRIEVALTVC
案例1解决方案:
检索tvc.h
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
#import<UIKit>
@interface
NSString *string;//comment this line ..this line is not required.
@property (nonatomic, copy) NSString *string;
@end
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
-(IBAction)getValue:(NSString *)val;
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
IRTViewConroller.h
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
@property (nonatomic, assign) id target;
-(IBAction)search:(id)sender //Action when Button is Pressed
IRTViewController.m
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve = [[RetrievalTVC alloc]init];
retrieve.string = searchTrain.text;
//Here when i used NSLog its returning the value
-(IBAciton)search:(id)sender{
RetrievalTVC *retriv = [[RetrievalTVC alloc]init];
[retrieve getValue:searchTrain.text];
retrieve.string = searchTrain.text;
@synthesize target;
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve =target;
retrieve.string = searchTrain.text;
}
案例2:它必须与您的方法配合使用方法名称可能拼写错误
理解力
- IRTViewController-它有文本字段,此值需要
转到RETRIEVALTVC
案例1。RETRIEVALTVC有一个IRTViewController的对象,请使用委托。
案例2。当用户仅点击按钮时,您将在IRTViewController中创建RETRIEVALTVC
案例1解决方案:
检索tvc.h
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
#import<UIKit>
@interface
NSString *string;//comment this line ..this line is not required.
@property (nonatomic, copy) NSString *string;
@end
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
-(IBAction)getValue:(NSString *)val;
#import<UIKit>
NSString *string;
@property (nonatomic, copy) NSString *string;
IRTViewConroller.h
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
-(IBAction)search:(id)sender //Action when Button is Pressed
@property (weak, nonatomic) IBOutlet UITextField *searchTrain;
@property (nonatomic, assign) id target;
-(IBAction)search:(id)sender //Action when Button is Pressed
IRTViewController.m
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve = [[RetrievalTVC alloc]init];
retrieve.string = searchTrain.text;
//Here when i used NSLog its returning the value
-(IBAciton)search:(id)sender{
RetrievalTVC *retriv = [[RetrievalTVC alloc]init];
[retrieve getValue:searchTrain.text];
retrieve.string = searchTrain.text;
@synthesize target;
-(IBAciton)search:(id)sender{
RetrievalTVC *retrieve =target;
retrieve.string = searchTrain.text;
}
案例2:它必须与您的方法一起工作,代码行与您分配的代码行相同。新的viewController是您进行分配(=)的地方
i、 在VC1中,让我们说string=VC1String,在VC2中,让我们说string=VC2String
在VC1.m内部,在分配VC2的同一行代码中(假设分配的名称也是VC2),只需编写:
VC2.VC2String = VC1String;
在您分配的同一行代码中,新的viewController是您应该进行分配(=)的地方
i、 在VC1中,让我们说string=VC1String,在VC2中,让我们说string=VC2String
在VC1.m内部,在分配VC2的同一行代码中(假设分配的名称也是VC2),只需编写:
VC2.VC2String = VC1String;
首先,在Appdelegate类中创建一个nsstring属性并对其进行合成。比如说-
在Appdelegate.h中:-
@property(nonatomic,retain)nsstring *objString;
在Appdelegate.m中:-
@synthesize objString;
现在,在ViewController中