代码之家  ›  专栏  ›  技术社区  ›  edoloughlin

使用UITextView加载XIB文件时引发了Nsexception

  •  0
  • edoloughlin  · 技术社区  · 16 年前

    我有一个带有uitextview的xib文件,它与控制器中的uitextview*插座关联:

    @interface MyController : UIViewController <UITextViewDelegate> {
        IBOutlet UITextView *textView;
    }
    
    @property (nonatomic, retain)  IBOutlet UITextView *textView;
    

    我绝望地装载了原型,没有实现任何委托的方法。

    我的视图是从主XIB文件中定义的选项卡栏加载的。当我点击相关的选项卡按钮时,会立即抛出异常(在调用任何控制器方法之前)。调用堆栈的顶部(从调试器中)如下所示:

    #0  0x93829bc6 in -[NSException raise]
    #1  0x9157f8f8 in _NSSetUsingKeyValueSetter
    #2  0x9157f35e in -[NSObject(NSKeyValueCoding) setValue:forKey:]
    #3  0x91603f81 in -[NSObject(NSKeyValueCoding) setValue:forKeyPath:]
    #4  0x30c1fadb in -[UIRuntimeOutletConnection connect]
    #5  0x9381ebe5 in -[NSArray makeObjectsPerformSelector:]
    #6  0x30c1e629 in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:]
    #7  0x30c2068c in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:]
    #8  0x30ac6f26 in -[UIViewController _loadViewFromNibNamed:bundle:]
    

    设置文本视图出口似乎有问题。我确信它与uitextview相关,因为如果我注释掉与文本视图相关的代码并从xib中删除文本视图,那么该视图就可以加载。控制台上没有可用的错误消息。

    在ib中创建uitextview元素时,有什么特别的考虑吗?我已经将它连接到我代码中的iboutlet,并且委托被设置为“文件所有者”(我也在没有委托的情况下尝试过)。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Alex Taylor    16 年前

    在您的选项卡视图中,您是否为设置XIB的选项卡将owning类设置为mycontroller?如果不这样做,就会出现这种选择器设置错误。把我的头发在这件上面拔了一点。

        2
  •  0
  •   Ben Gotow Dmitry Nogin    16 年前

    进入Interface Builder并选择MyController的实例。单击“信息”面板中的第二个选项卡以显示附加到对象的所有连接。它应该显示现有的“TableView”插座和其他一些插座。如果它是灰色的-这意味着接口生成器对连接的定义不正确,并且插座无效。如果是这样的话(就像我想的那样?)只需单击X断开连接,然后重新创建。当我在xcode中更新outlets和actions的名称时,我已经经历过几次这种情况。

    我也会尝试让代表不安,以确保这不是问题所在。不过,我认为这不重要。

    祝你好运!

    推荐文章