我对iOS编程相当陌生,并且试图使用if单例将用户输入字符串从文本字段传递到另一个视图。我的应用的目的是让用户键入车辆名称或型号,然后显示 Craigslist 搜索它。
在查看了一些 youtube 指南后,似乎我的代码应该可以工作,但字符串没有被传递,它只显示为 (null)。谁能说出出了什么问题?
这些是我的单例文件和与设置和获取字符串相关的代码,我的所有文件都有导入语句GlobalVariables.h
:
全局变量.h
@interface GlobalVariables : NSObject{
NSString *globalStr;
}
@property(nonatomic, strong) NSString *globalStr;
+(GlobalVariables *) singleObj;
@end
全局变量.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;
}
获取全局 Str 的代码
GlobalVariables* myVar = [GlobalVariables singleObj];
NSString *searchStr = myVar.globalStr;
在您的 -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;
}