Ios 我可以用Interface Builder构建RubyMotion应用程序吗?

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

刚刚发布,屏幕广播似乎没有说明您是否可以使用Interface Builder构建接口并将其集成到RubyMotion项目中。这可能吗?或者我真的可以手工编写所有代码,更不用说维护iPhone/iPad的不同代码了


我的代表级别不够高,无法创建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)

  • 约翰尼斯

我只想指出,RubyMotion 1.3现在支持自动编译放入
参考资料
文件夹中的
.xib
文件。因此,现在工作流变成:

  • 使用XCode创建
    .xib
    文件(无需创建项目,只需使用file | New…| file)并将其保存到
    resources
    文件夹中。由于目前还不支持outlets,请小心为代码中要使用的每个控件设置
    标记
    属性(您可以在“视图”标题下的每个组件的属性表中找到)
  • RubyMotion将负责将
    .xib
    文件编译成
    .nib
    文件,请欣赏:)
  • UIViewController
    派生类中,使用
    loadNibNamed:owner:options:
    加载nib,如下所示
  • viewDidLoad
    中,使用
    viewWithTag:
    获取各种组件,并使用
    addTarget:action:forControlEvents:
    添加事件处理程序,如下所示
  • 作为奖励,下次您想要编辑xib时,只需执行
    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的自动完成。所以这可能对你有帮助