2

我有两个控制器 - 如何从控制台调用其中的函数?

(main)>

4

3 回答 3

7

我能弄清楚如何做到这一点的唯一方法是使用 UIApplication sharedApplication 类方法并从那里向下钻取,这很恶心。

(main)> UIApplication.sharedApplication.delegate
=> #<AppDelegate:0x6c8a800 @window=#<UIWindow:0x6e71280>>

不幸的是,要访问该窗口,我必须在attr_reader :window我的 AppDelegate 类中添加一个来访问这个私有变量,然后进一步深入了解视图控制器:

(main)> vc = UIApplication.sharedApplication.delegate.window.rootViewController
=> #<TouchesViewController:0x8c747c0>

现在您应该能够调用该视图控制器上的任何公共方法。

于 2012-06-27T23:52:43.887 回答
5

我通常在视图控制器中添加一个临时全局变量,以便更容易从控制台访问它。

def viewDidLoad
  $temp_view = self
end

它不漂亮,但可以完成工作。

于 2012-09-19T17:39:57.293 回答
0

大多数时候都有UIViewController-s的层次结构,你可以利用它们。从UIWindow#rootViewController实例开始,并在childViewControllers. 我建议使用BubbleWrap访问窗口 ( App.window) 或委托 ( App.delegate)。我维护的SugarCubegem 也提供了一种查看视图或 viewController 层次结构的简单方法 - REPL 中的treetree root命令可用于此目的。

于 2012-11-27T02:52:48.303 回答