我刚开始使用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
并使用GetNativeField
和SetNativeField
的属性定义,但我看到相同的结果。
答案 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.'
同样,在我的情况下,我发现了我的解决方案:
- 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.在链接器选项中选择“链接所有程序集”链接器行为。