2010-07-25 69 views
0

我對OOP相當陌生,幾個月前剛剛開始使用Obj-c。所以,請溫柔!我很感激你的幫助。現在回答這個問題!iPhone SDK:我可以從一個視圖中抓取實例變量並在另一個視圖中訪問嗎?

我有3個文本字段,用戶輸入姓名,電話和電子郵件。

我收集並使用一個NSString像這樣[這是一個名字]將它們放置在一個標籤:

- (IBAction)changeGreeting:(id)sender { 
self.name = textInput.text; 

NSString *nameString = name; 
if([nameString length] == 0) { 
    nameString = @"I Forgot"; 
} 
NSString *greeting = [[NSString alloc] 
         initWithFormat:@"Hello, my name is %@! Really!", nameString]; 
label.text = greeting; 
[greeting release]; 
} 

有了這個,我已經能夠將文本從text.input放在我標籤(如label.text = greeting;中所述)

我有另一種觀點,我想讓某人查看此信息(也查看標籤)。我需要在其他視圖中訪問名稱或Textinput.text。

我該如何做到這一點?

回答

2

如果您不需要在兩個視圖控制器之間傳遞更改,則可能需要使用自定義的init方法傳遞它。這對於確認屏幕來說可能是最好的,其中提示將毫無意義沒有這個字符串。

- (id)initWithFrame:(CGRect)aRect username:(NSString*)aName { 
    if((self = [super initWithFrame:aRect])) { 
     _myName = [aName retain]; 
    } 
    return self 
} 

另一種方法是在第一個視圖控制器上實現一個方法,並從第二個視圖控制器調用它。

- (NSString*)enteredUsername { 
    return _myName; 
} 
+0

非常感謝,這很有幫助!但是,我認爲我正在接近這個錯誤。當用戶退出應用程序時,我也想保留所有這些值(如果需要,稍後再調用)。我猜我需要學習NSDictionary類?有更好的建議嗎? – Macness 2010-07-26 19:01:10

+0

我建議讀一讀'NSUserDefaults',它基本上是一個在應用程序啓動之間保持不變的字典。 – Justin 2010-07-26 19:09:31

+0

值得一提的是,訪問者是多餘的,因爲'name'被聲明爲屬性。我編輯了我的答案來匹配。 – Justin 2010-07-26 19:34:13

相關問題