2012-03-04 128 views
1

我遇到的問題是我有幾個ViewController s,我想從另一個ViewController中的一個ViewController訪問變量。這可能可以很簡單地解決(但我不明白這一點),但如果我有,例如UITextFieldViewController1調用myTextField,我如何從ViewController2訪問myTextField.text在Objective-C中從另一個類的一個實例中訪問變量

我嘗試在我的第二個類中實例化UIViewController,但那不起作用,因爲那只是一個新的實例化類,而不是已經實例化的類,因此所有變量都沒有正確的值。

在此先感謝!

+1

你想通過訪問其他人來完成什麼?可能有更好的方法,比如通知,委託等。如果你描述你想要完成的事情,我們可以給你一個更好的答案。 – user1118321 2012-03-04 05:49:12

回答

0

訪問所有視圖控制器中文本字段的簡單方法。

  • 創建一個新的類(NSObject的子類)
  • 使其在 程序的壽命singleton..i.e.only一個實例。
  • 將文本存儲在單例類中。
  • 檢索其他視圖控制器單身並加載文本..

谷歌單Objective-C中找到更多關於它。

1

無論你想要做什麼幾乎肯定是錯的。至少,它違背了規則,你應該而不是試圖從另一個視圖內訪問一個視圖的視覺效果。

你應該把從你計劃分享到你的模型類,不管它可能是UITextField數據,以及訪問這些數據通過模型,而不是試圖直接訪問UITextField

+0

什麼是模型課程? – 2012-03-04 16:57:46

+0

@ user1226490這是您用來保持獨立於視圖的數據的對象。閱讀[本MVC](https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html#//apple_ref/doc/uid/TP40008195-CH32)指南瞭解更多關於模型 - 視圖 - 控制器模式的信息。 – dasblinkenlight 2012-03-04 17:04:29

0

我發現,最簡單的方法是創建一個靜態方法,該方法返回您嘗試訪問的變量,無論是在類中還是僅在第一個視圖控制器中作爲實例變量。

第一個視圖控制器

+ (NSString*) returnSomestring{ 
    return myVariable; 
    //myVariable can be replaced with textView.text or whatever you need it to be. 
} 

第二個視圖控制器

#import "FirstViewController.h" 

- (void) doSomething{ 
    NSString* var = [FirstViewController returnSomestring]; 
    //Code 
} 

問題解決了!

+0

但是我的這個想法的問題是,每個實例不會'myVariable'不相同,因此類本身不知道要返回哪個實例(即使只有一個分配的實例),導致發生錯誤? – 2012-03-04 16:59:24

相關問題