此类不符合键值编码(与故事板)

时间:2013-06-05 13:25:26

标签: ios xamarin

我刚开始使用Xamarin进行iOS开发,似乎遇到了障碍。我正在尝试创建一个自定义表格单元格来显示一些数据。因此,从各种在线资源中获取提示(例如,参见here),我创建了一个.xib文件,删除了Xamarin自动创建的视图,并将其替换为UITableViewCell。我在我的单元格中添加了一些标签,我使用RegisterNibForCellReuse注册了我的单元格并设置了继承自UITableViewSource的类,以便在适当的时候返回我的自定义单元格。到目前为止一切都很好。

当我在自定义单元格中执行任何控件并尝试创建插座时,问题就开始了。在XCode中创建插座,一切看起来都不错。回到Xamarin,我可以看到它为它自动创建了一个属性。

[Register ("MyCustomCell")]
partial class MyCustomCell
{
    [Outlet]
    MonoTouch.UIKit.UILabel MyLabel { get; set; }



    void ReleaseDesignerOutlets ()
    {
        if (MyLabel != null) {
            MyLabel.Dispose ();
            MyLabel = null;
        }
    }
}

但是当我尝试运行代码时,我收到运行时错误This class in not key value coding-compliant for key the key MyOutlet

知道可能会发生什么吗? Xamarin文档提出了可能的原因here,但我不确定它是否相关。我没有在Xamarin创建的设计器文件的任何中看到类似的内容,并且它们一切都很好。我尝试将上面的属性定义替换为使用Connect属性而不是Outlet并使用GetNativeFieldSetNativeField的属性定义,但我看到相同的结果。

6 个答案:

答案 0 :(得分:7)

我遇到这个问题已经有一段时间了,但事实证明这是一个与构建过程有关的问题。以下为我解决了这个问题:

右键单击您的项目,在“Build”子标题下选择“Options”,然后选择“iOS Build”,将-f添加到“Additional mtouch arguments”并重建。

答案 1 :(得分:4)

我遇到了同样的问题,最后我在XCode中做了Product-> Clean,它解决了我的问题。

答案 2 :(得分:1)

右键点击您的项目,选择'选项'然后' iOS Build'在' Build'子标题,添加-f到'其他mtouch参数'并重建。

答案 3 :(得分:1)

在我的情况下,我正在为几个按钮创建动作,我不小心做了一个出口,而不是动作。我刚刚删除了@IBOutlet一行。

我的错误是:

 this class is not key value coding-compliant for the key Button_Twitter_Clicked.'

同样,在我的情况下,我发现了我的解决方案:

http://www.tech-recipes.com/rx/52021/how-do-i-fix-the-issue-this-class-is-not-key-value-coding-compliant-for-the-key-in-xcode-6/

 - Click the "Show Find Navigator" on the left hand side
 - Search for the key above that gave the error, in my case it was the "Button_Twitter_Clicked" key.
 - Double click on the result (my case, I clicked on the View Controller:Outlet
 - On the right hand side, find the Key that was in the exception thrown during runtime (Has exclamation mark)
   (States that the view controller does not have an outlet named [outletname]
 - Click the X button
 - Recompile :)

希望这有帮助!

答案 4 :(得分:0)

我同意理查德的回答。

您可以做的另一件事是重建项目。是-f参数的作用。

答案 5 :(得分:0)

虽然这是一个相对古老的话题,但我想分享一下我的经验。所以我有同样的问题,“清洁”解决方案对我不起作用。我的解决方案是:1。右键单击您的项目,选择“选项”2.在构建部分下选择iOS Build 3.在链接器选项中选择“链接所有程序集”链接器行为。