Ruby Motion刚刚出来,屏幕录像似乎没有说明是否可以使用Interface Builder来构建接口并将它们集成到RubyMotion项目中。这样的事情可能吗?或者我是否真的拥有一切代码,更不用说维护iPhone/iPad的不同代码了?我可以使用Interface Builder构建RubyMotion应用程序吗?
我的代表不够高,无法创建rubymotion标签,因此请在适当情况下提供帮助。
Ruby Motion刚刚出来,屏幕录像似乎没有说明是否可以使用Interface Builder来构建接口并将它们集成到RubyMotion项目中。这样的事情可能吗?或者我是否真的拥有一切代码,更不用说维护iPhone/iPad的不同代码了?我可以使用Interface Builder构建RubyMotion应用程序吗?
我的代表不够高,无法创建rubymotion标签,因此请在适当情况下提供帮助。
我只是想指出,RubyMotion 1.3现在支持的,你投入resources
文件夹中的文件.xib
自动编译。所以,现在的流程变为:
.xib
文件(无需创建一个项目,只需使用文件|新建... |文件),并将其保存到文件夹resources
。由于目前还没有对插座的支持,请注意为代码中要使用的每个控件设置tag
属性(您可以在“View”标题下的每个组件的属性表中找到)。.xib
成.nib
文件的,所以享受:)UIViewController
派生类中,加载使用loadNibNamed:owner:options:
笔尖,如下图所示。viewDidLoad
中,使用viewWithTag:
获取各种组件,并使用addTarget:action:forControlEvents:
添加事件处理程序,如下所示。作为奖励,下次你想编辑你的xib时,只需要做open resources/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
下面是一个使用这种技术的示例项目:[MotionCalc](https://github.com/nlehuen/MotionCalc) –
也许也想看看这个:http://ianp.org/ 2012/05/07/rubymotion-和接口建设者/ – hutch
但是,如果你真的想使用IB那么你仍然可以或许用它来布置您的用户界面并调用
NSBundle.mainBundle.loadNibNamed(MY_NIB_NAME, owner:self, options:nil)
或相似。我认为RubyMotion没有任何名称可以改变,所以你可以在IB中使用你的ruby类,方法是明确地设置它们。
也许你可以多说一些关于如何将XIB编译到NIB中以用于RubyMotion项目的问题?这似乎是棘手的部分... –
你可以使用'ibtool'。棘手的部分是连接插座和操作,因为您不能使用XCode的拖放功能。 –
我试过这样做,传递选项'--compile'和'--flatten NO',但它一直抛出一个'NSInternalInconsistencyException'给我。我正在用'myViewController.alloc.initWithNibName(“MyViewController”,bundle:nil)加载它' 你究竟如何运行'ibtool'来获得一个可加载的nib文件? –
您可能可以在IB中构建接口并调用命令行工具将XIB编译为NIB。
但是,由于IB无法解析IBOutlet
和IBAction
令牌的Ruby源文件,因此您无法连接插座或分配操作。通常,NIB加载代码会在加载您的NIB后为您建立连接。你必须自己做代码。
在RubyMotion的两个明显的弱点中,对我来说这是最糟糕的。 (另一个是缺乏代码完成将使可可API的写入真的很乏味。)
ruby mine的下一个版本IDE支持ruby运动开发和Cocoa API的自动完成。所以这可能对你有所帮助 – Rubinsh
卡布奇诺有同样的问题。他们开发了一个名为XcodeCapp的工具:https://github.com/cappuccino/cappuccino/tree/master/Tools/XcodeCapp
它创建“虚拟”Obj-C文件,您可以将您的插座和操作连接到IB中,在后台自动解析它们并使您能够使用IB布局您的卡布奇诺UI 。
RubyMotion应该可以采取类似的方法(如果你真的想使用IB)。
是的,你可以在RubyMotion使用Interface Builder。
位于资源目录中的.xib文件会自动编译为.nib文件,并可供您的项目使用。
甚至还有支持出口的方式,如果你有这样的倾向:
https://github.com/yury/ib#readme
http://ianp.org/2012/05/07/rubymotion-and-interface-builder/
是谁的人已经作出:
这里是一个教程视频:https://www.youtube.com/watch?v=cOapNvehbg4
这是网站https://github.com/yury/ib
特蒂普:要找到rubymotion包装检查此源
http://rubymotion-wrappers.com/
希望这有助于
试试这个http://ianp.org/2012/ 05/07/rubymotion-and-interface-builder/ – Andrei