2013-10-06 104 views
1

我對iOS編程相當陌生,並試圖將用戶輸入字符串從文本字段傳遞到另一個視圖,並使用單個視圖。我的應用程序的目的是讓用戶輸入車輛名稱或型號,然後顯示Craigslist搜索它。以單身人士傳遞字符串

看過一些YouTube指南後,看起來我的代碼應該工作,但字符串沒有被傳遞,它只顯示爲(空)。誰能說出有什麼問題?

這些都是我的相關設置和獲取字符串單文件和代碼,我對我所有的文件導入語句GlobalVariables.h

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

馬特在下面的回答表明,你確定textToPass它不是'nil'? –

+2

請注意,請不要使用單身來「傳遞」參數。你會在腳下開槍自殺。瞭解如何使用正確的參數和查看控制器字段。 –

+0

這是如何編譯的?你有一個實例變量,也是一個具有相同名稱和類型的屬性?我建議你刪除實例變量聲明'{NSString * globalStr;}'並重試。 – Kedar

回答

0

在你-passValues方法,可以將其更改爲這一點,並檢查是否textToPass不是零? 是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; 

} 
+0

對不起。我其實是想表明他明確地傳遞了字符串。我編輯了我的答案。 –

+0

textToPass是一個NSString。 –

+0

它包含一個字符串,然後將其設置爲單身人士的財產? –