这个类与Storyboard不符合键值编码兼容性。

5
我刚开始使用Xamarin进行iOS开发,遇到了一个难题。我正在尝试创建自定义的表格单元格来显示一些数据。因此,我从各种在线资源中获取提示(例如,请参见这里),创建了一个.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 文档提供了可能的原因这里,但我不确定它是否相关。在 Xamarin 创建的任何一个设计文件中都没有看到像那样的东西,而且它们一直很好。我尝试将上面的属性定义替换为使用 Connect 属性而不是 Outlet 并使用 GetNativeFieldSetNativeField,但我看到相同的结果。
6个回答

7

我曾经遇到过这个问题,最后发现是与编译过程有关。以下方法可以解决:

右键单击你的项目,选择“选项”,然后在“构建”子菜单下选择“iOS构建”,将-f添加到“附加mtouch参数”中并重新构建即可。


3

我遇到了同样的问题,最后我在XCode中执行了Product->Clean操作,问题得到了解决。


1
在我的情况下,我正在为一些按钮创建操作,并且不小心创建了一个outlet而不是action。我只需删除@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 :)

希望这有所帮助!

1
右键点击您的项目,选择“选项”,然后在“构建”子标题下选择“iOS构建”,将-f添加到“其他mtouch参数”中并重新构建。

0

我曾经遇到过同样的问题,但是“清理”解决方案对我没有用。我的解决方案是:

  1. 右键单击您的项目,选择“选项”

  2. 在构建部分中选择iOS Build

  3. 在链接器选项中选择“链接所有程序集”链接器行为。


这不是一个解决方案。这没有任何意义。 - Grigory

0

我同意Richard的答案。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接