我有两个控制器 - 如何从控制台调用其中的功能?
(main)>
答案 0 :(得分:7)
我能弄清楚如何做到这一点的唯一方法是使用UIApplication sharedApplication类方法并从那里向下钻取,这非常icky。
(main)> UIApplication.sharedApplication.delegate
=> #<AppDelegate:0x6c8a800 @window=#<UIWindow:0x6e71280>>
不幸的是,为了访问窗口,我不得不在我的AppDelegate类中添加attr_reader :window
来访问这个私有变量,然后进一步向下钻取以获取视图控制器:
(main)> vc = UIApplication.sharedApplication.delegate.window.rootViewController
=> #<TouchesViewController:0x8c747c0>
现在,您应该可以在该视图控制器上调用任何公共方法。
答案 1 :(得分:5)
我通常在视图控制器中添加一个临时全局变量,以便更容易从控制台访问它。
def viewDidLoad
$temp_view = self
end
它不漂亮,但完成工作。
答案 2 :(得分:0)
大部分时间都存在UIViewController
- s的层次结构,您可以使用这些层次结构。从UIWindow#rootViewController
实例开始,浏览childViewControllers
。我建议使用BubbleWrap
访问窗口(App.window
)或委托(App.delegate
)。我维护的SugarCube
gem提供了一种查看视图或viewController层次结构的简单方法 - 为此目的,REPL中提供了tree
和tree root
命令。 / p>