我能弄清楚如何做到这一点的唯一方法是使用UIApplication sharedApplication类方法并从那里向下钻取,这非常狡猾.
(main)> UIApplication.sharedApplication.delegate
=> #<AppDelegate:0x6c8a800 @window=#<UIWindow:0x6e71280>>
Run Code Online (Sandbox Code Playgroud)
不幸的是,为了访问窗口,我必须添加一个attr_reader :window到我的AppDelegate类来访问这个私有变量,然后进一步向下钻取以获取视图控制器:
(main)> vc = UIApplication.sharedApplication.delegate.window.rootViewController
=> #<TouchesViewController:0x8c747c0>
Run Code Online (Sandbox Code Playgroud)
现在,您应该能够在该视图控制器上调用任何公共方法.
我通常在视图控制器中添加一个临时全局变量,以便更容易从控制台访问它.
def viewDidLoad
$temp_view = self
end
Run Code Online (Sandbox Code Playgroud)
它不漂亮,但完成工作.