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使用GetNativeFieldand的属性定义SetNativeField,但我看到了相同的结果。

4

6 回答 6

7

在我的情况下,我有一段时间遇到这个问题,结果证明是与构建过程有关的问题。以下为我修复了它:

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

于 2013-07-11T02:06:45.067 回答
3

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

于 2014-03-17T15:07:10.580 回答
1

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

于 2014-11-24T10:33:39.473 回答
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-在-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 :)

希望这可以帮助!

于 2017-08-02T03:14:54.350 回答
0

我同意理查德的回答。

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

于 2013-09-18T03:27:30.437 回答
0

我有同样的问题,“清洁”解决方案对我不起作用。我的解决方案是:

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

  2. 在 Build 部分下选择 iOS Build

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

于 2014-06-06T14:04:52.130 回答