Ios 我可以用Interface Builder构建RubyMotion应用程序吗?
刚刚发布,屏幕广播似乎没有说明您是否可以使用Interface Builder构建接口并将其集成到RubyMotion项目中。这可能吗?或者我真的可以手工编写所有代码,更不用说维护iPhone/iPad的不同代码了Ios 我可以用Interface Builder构建RubyMotion应用程序吗?,ios,interface-builder,rubymotion,Ios,Interface Builder,Rubymotion,刚刚发布,屏幕广播似乎没有说明您是否可以使用Interface Builder构建接口并将其集成到RubyMotion项目中。这可能吗?或者我真的可以手工编写所有代码,更不用说维护iPhone/iPad的不同代码了 我的代表级别不够高,无法创建rubymotion标记,因此请在适当的情况下提供帮助 但是如果你真的想使用IB,那么你仍然可以使用它来布局你的UI,然后调用它 NSBundle.mainBundle.loadNibNamed(MY_NIB_NAME, owner:self, optio
我的代表级别不够高,无法创建rubymotion标记,因此请在适当的情况下提供帮助 但是如果你真的想使用IB,那么你仍然可以使用它来布局你的UI,然后调用它
NSBundle.mainBundle.loadNibNamed(MY_NIB_NAME, owner:self, options:nil)
或类似的。我认为RubyMotion不会破坏任何名称,因此您可以通过显式设置在IB中使用ruby类。您可能可以在IB中构建接口,并调用命令行工具将XIB编译为NIB 但是,您将无法连接出口或分配操作,因为IB无法解析
IBOutlet
和IBAction
令牌的Ruby源文件。通常,NIB加载代码在加载NIB后为您建立这些连接。你必须自己做,用代码
在RubyMoon两个明显的弱点中,对我来说这是最糟糕的。(另一个原因是缺少代码完成将使编写Cocoa API变得非常乏味。)卡布奇诺也有同样的问题。他们开发了一种称为xcodecap的工具: 它创建“虚拟”Obj-C文件,您可以在IB中连接您的出口和操作,在后台自动解析它们,并允许您使用IB来布局Cappuccino UI 对于RubyMotion,应该可以采用类似的方法(如果您真的想使用IB)
- 约翰尼斯
参考资料
文件夹中的.xib
文件。因此,现在工作流变成:
.xib
文件(无需创建项目,只需使用file | New…| file)并将其保存到resources
文件夹中。由于目前还不支持outlets,请小心为代码中要使用的每个控件设置标记属性(您可以在“视图”标题下的每个组件的属性表中找到)
.xib
文件编译成.nib
文件,请欣赏:)UIViewController
派生类中,使用loadNibNamed:owner:options:
加载nib,如下所示viewDidLoad
中,使用viewWithTag:
获取各种组件,并使用addTarget:action:forControlEvents:
添加事件处理程序,如下所示openresources/MyView.xib
,它只会启动XCode的好部分
class CalculatorViewController < UIViewController
def loadView
views = NSBundle.mainBundle.loadNibNamed "Keyboard", owner:self, options:nil
self.view = views[0]
end
def viewDidLoad
button = view.viewWithTag 1
button.addTarget self, action:'buttonTapped:', forControlEvents:UIControlEventTouchUpInside
end
def buttonTapped(button)
# ...
end
end
class CalculatorViewController
是的,您可以在RubyMotion中使用Interface Builder 位于资源目录中的.xib文件将自动编译为.nib文件,并可供项目使用 如果你有这样的倾向,甚至有一种方法可以支持销售点:
有人做到了这一点: 以下是教程视频: 这是网站 额外提示:要查找RubyMoon的包装,请检查此源代码
希望这能有所帮助也许您可以多说一点关于如何将XIB编译成NIB以用于RubyMotion项目的内容?这似乎是一个棘手的部分…您可以使用
ibtool
。棘手的部分是连接出口和操作,因为您不能使用XCode的拖放功能。我尝试过这样做,传递选项--compile
和--flatten NO
,但它不断向我抛出NSInternalInconsistencyException
。我用myViewController.alloc.initWithNibName(“myViewController”,bundle:nil)加载它
如何运行ibtool
以获得可加载的nib文件?试试下面这是一个使用这种技术的示例项目:可能也想看看这个:ruby mine IDE的下一个版本支持ruby运动开发和Cocoa API的自动完成。所以这可能对你有帮助