我对iOS编程很新,并尝试将用户输入字符串从文本字段传递到另一个视图,并使用if singletons。我的应用程序的目的是让用户输入车辆名称或型号,然后显示Craigslist搜索它。
在查看了一些youtube指南后,似乎我的代码应该正常工作,但字符串没有被传递,它只显示为(null)。任何人都可以说出错了吗?
这些是我的单例文件和与设置和获取字符串相关的代码,我对GlobalVariables.h
的所有文件都有import语句:
GlobalVariables.h
@interface GlobalVariables : NSObject{
NSString *globalStr;
}
@property(nonatomic, strong) NSString *globalStr;
+(GlobalVariables *) singleObj;
@end
GlobalVariables.m
@implementation GlobalVariables
@synthesize globalStr;
static GlobalVariables *singleObj = nil;
+ (GlobalVariables *) singleObj{
@synchronized(self){
if (singleObj==nil){
singleObj = [[self alloc]init];
}
}
return singleObj;
}
@end
设置globalStr的代码:* nameTextField
是用户输入字段
-(IBAction)searchButtonPressed:(id)sender
{
textToPass = nameTextField.text;
[self passValues];
}
- (void) passValues{
GlobalVariables *myVar = [GlobalVariables singleObj];
myVar.globalStr = textToPass;
}
获取globalStr的代码
GlobalVariables* myVar = [GlobalVariables singleObj];
NSString *searchStr = myVar.globalStr;
答案 0 :(得分:0)
在你的-passValues方法中,你能改变它并检查textToPass是不是nil? textToPass是属性吗?
- (void) passValues{
NSLog(@"textToPass: %@", textToPass);
GlobalVariables *myVar = [GlobalVariables singleObj];
myVar.globalStr = textToPass;
}
您的代码可能需要看起来像这样:
-(IBAction)searchButtonPressed:(id)sender
{
textToPass = nameTextField.text;
[self passValues:textToPass];
}
- (void)passValues:(NSString *)text
{
GlobalVariables *myVar = [GlobalVariables singleObj];
myVar.globalStr = text;
}