2010-06-11 44 views
9

我做這個拿到的觀點:得到的UIView的視圖 - 控制(iphone)

[self.superview viewWithTag:10] 

但我怎麼能得到該視圖的視圖控制器。就像你可以得到viewcontroller的視圖一樣,我想以另一種方式去發送消息(調用一個方法)給那個viewcontroller。例如:

[[self.superview viewWithTag:10].viewController doSomething]; 

(顯然是不實際的代碼,但我想類似的東西)

+0

看看協議的目標C – Daniel 2010-06-11 18:52:48

+0

重複http://stackoverflow.com/questions/1340434/get-to-uiviewcontroller-from-uiview-on-iphone,爲http://計算器。 com/questions/2367348 /如何獲取視圖控制器從uiview通過代碼 – user102008 2011-01-22 21:41:06

+0

視圖不應該需要這樣做。 – 2010-06-11 19:12:53

回答

22

可以使用-nextResponder方法來做到這一點:

[(YourUIViewController *)[[self.superview viewWithTag:10] nextResponder] doSomething]; 

http://developer.apple.com/library/ios/documentation/uikit/reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/nextResponder,「UIView的工具這個方法通過返回管理它的UIViewController對象(如果它有一個)或它的超級視圖(如果它沒有)「

+1

通過調用此方法來獲取視圖的viewcontroller是否真的很乾淨而且安全? – booker 2012-04-28 17:30:05

+1

其實它不適合我。 – booker 2012-04-28 17:44:06

+1

它對我很好用 – 2013-03-01 07:43:07

12

你可以我們Ë

[yourUIView.window.rootViewController doSomething] 
+0

一些進一步的細節答案... http://stackoverflow.com/a/2596519/294884可能會幫助某人 – Fattie 2014-04-14 14:12:51

相關問題