2012-08-08 57 views
0

我該怎麼做?我可以將代理目標指向ViewController的「特定」實例,以獲取它的數據嗎?

我有ViewController 1ViewController 2

ViewController 1定義了一個協議和ViewController 2符合它。

我設置ViewController 2有一個委託並調用ViewController 1中的方法。這種方法運行良好。併發送確認回我的ViewController 2

我可以在它們之間交換數據,但我試圖找出一個辦法,來防止的一個特定實例視圖控制器1獲取數據,以的ViewController 2

因爲當我使用我的委託,運行在方法的ViewController 1它不會對特定瞬間,我很感興趣的

有沒有辦法可以解決這個問題?

我可以設置我的委託,一個特定實例的委託,所以我可以得到它的狀態?這可能嗎?如果是這樣,怎麼樣?

換句話說,我可以使用我的委託來定位特定實例嗎?

-

p.s.如果我試圖獲取由ViewController 1統治的屬性的數據,它會有零(我認爲這是因爲我沒有針對特定的實例)!我可以解決這個問題的一種方法是讀取「已保存的數據」。但我會複製代碼,並用先前ViewController中已有的數據實例化新對象。

任何幫助最受讚賞。先謝謝你!

努諾

編輯:

SetupTableViewController *delegate = [[SetupTableViewController alloc] init]; 
[delegate setDelegate:self]; 

每個屬性我試圖從轉發了這一點得到的,是零。我如何將這個目標定位到我以前的ViewController的特定實例?我不想實例化一個新的SetupViewController。我真正需要的是訪問我的SetupViewController的現有實例。

+1

我認爲你需要顯示你的代碼。爲什麼你有多個視圖控制器的實例? – rdelmar 2012-08-08 18:40:32

+0

好的,那絕對是你的問題。您正在創建一個新實例,然後將新實例分配爲委託。你如何創建第二個視圖控制器?它被推?以模態方式進行辯護?等等? – 2012-08-08 19:06:06

+0

它是封閉的。與故事板一起完成。所有的一切都嵌入在導航控制器」 – nmdias 2012-08-08 19:09:46

回答

0

這個問題真的很模糊,你應該發佈一些代碼來更好地解釋你想要達到的目標。

「我可以在它們之間交換數據,但我試圖找出一個 方式,從視圖控制器1的特定實例中獲取數據,以 的ViewController 2」。

那麼當你做myViewController1Instance。委託=自我; ,您所做的任何委託調用將僅從myViewController1Instance對象發送到ViewController2,而不是從ViewController1類的其他實例發送。

+0

下面是我在做什麼,SetupTableViewController *委託= [[SetupTableViewController的alloc]初始化]; \t [代表setDelegate:自我] < - 每個屬性我試圖讓,是零如何。我可以指定這一個特定的實例? – nmdias 2012-08-08 18:51:41

+0

其實你寫的方式,'myViewController1Instance'將發送它的'delegate'調用'self',不是周圍的其他方法。 – 2012-08-08 18:57:40

+0

你分配/初始化屬性的,你嘗試?得到的是他們在viewDidLoad方法初始化@JustinPaulson我假設行myViewController1Instance.delegate =自我;在ViewController2實例做 – 2012-08-08 18:59:18

0

而是採用委託你正在嘗試做的方式,這是一個有點akward的,請嘗試使用替代的通知。當一個實例知道它需要發送的東西,它拋出,它被認爲陷入通知控制器2

,爲什麼你有比屏幕上VC1的一個實例嗎?你能提供更多關於你想要達到的信息嗎?

+0

說實話,我有3個vc。我試圖從vc1獲取一個數組到vc3。但我需要從我所瞭解的目標中找出vc1的實例。而不是創建一個新的實例,它的屬性爲零。 – nmdias 2012-08-08 18:59:32

0

將(UIViewController *)發件人添加到您的協議消息。

在收到消息,查看發件人,如果不是你有興趣,只返回一個。

雖然我不得不同意Sorin,但你可能會更好地使用通知。

這些問題通常可以通過架構改進來解決。總是善於退後一步,思考數據是否在正確的位置。

相關問題