我有一个在IB 3.x中创建的XIB解决方案。当我在xCode 4中编辑它们并保存更改时,我的Xib文件都搞砸了并且没有显示任何内容 - 只是空白屏幕。
也许项目没有正确升级? 如果有人有任何想法,请尽快告诉我 - 我无法编辑任何XIB!
设定: 我仔细检查了MT和MD是最新的。 2.编译ios 4.x. 3.根据我的设置和解决方案,问题是100%可重现的
以下是文件的前后文件。以下是我用来解决问题的确切步骤。
由于5K限制,我无法发布整个文件但是jist是新的Xcode 4文件有完整的getter和setter。
**** ORIGINAL XCode 3.x代码:
// --------------------------------------------- ---------------------------------
// <autogenerated>
// This code was generated by a tool.
// Mono Runtime Version: 4.0.30319.1
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </autogenerated>
// ------------------------------------------------------------------------------
namespace iPhoneSolution
{
// Base type probably should be MonoTouch.UIKit.UIViewController or subclass
[MonoTouch.Foundation.Register("NewTaskView")]
public partial class NewTaskView {
private MonoTouch.UIKit.UIView __mt_view;
private MonoTouch.UIKit.UIButton __mt_cmdAddRecipient;
private MonoTouch.UIKit.UIButton __mt_cmdPickDateTime;
private MonoTouch.UIKit.UITextView __mt_txtDescription;
private MonoTouch.UIKit.UITextField __mt_txtDueDat;
private MonoTouch.UIKit.UITextField __mt_txtName;
private MonoTouch.UIKit.UITextView __mt_txtRecipients;
private MonoTouch.UIKit.UIButton __mt_cmdDoneDescription;
private MonoTouch.UIKit.UIButton __mt_cmdSend;
#pragma warning disable 0169
[MonoTouch.Foundation.Connect("view")]
private MonoTouch.UIKit.UIView view {
get {
this.__mt_view = ((MonoTouch.UIKit.UIView)(this.GetNativeField("view")));
return this.__mt_view;
}
set {
this.__mt_view = value;
this.SetNativeField("view", value);
}
}
[MonoTouch.Foundation.Connect("cmdAddRecipient")]
private MonoTouch.UIKit.UIButton cmdAddRecipient {
get {
this.__mt_cmdAddRecipient = ((MonoTouch.UIKit.UIButton)(this.GetNativeField("cmdAddRecipient")));
return this.__mt_cmdAddRecipient;
}
set {
this.__mt_cmdAddRecipient = value;
this.SetNativeField("cmdAddRecipient", value);
}
}
[MonoTouch.Foundation.Connect("cmdPickDateTime")]
private MonoTouch.UIKit.UIButton cmdPickDateTime {
get {
this.__mt_cmdPickDateTime = ((MonoTouch.UIKit.UIButton)(this.GetNativeField("cmdPickDateTime")));
return this.__mt_cmdPickDateTime;
}
set {
this.__mt_cmdPickDateTime = value;
this.SetNativeField("cmdPickDateTime", value);
}
}
[MonoTouch.Foundation.Connect("txtDescription")]
private MonoTouch.UIKit.UITextView txtDescription {
get {
this.__mt_txtDescription = ((MonoTouch.UIKit.UITextView)(this.GetNativeField("txtDescription")));
return this.__mt_txtDescription;
}
set {
this.__mt_txtDescription = value;
this.SetNativeField("txtDescription", value);
}
}
[MonoTouch.Foundation.Connect("txtDueDat")]
private MonoTouch.UIKit.UITextField txtDueDat {
get {
this.__mt_txtDueDat = ((MonoTouch.UIKit.UITextField)(this.GetNativeField("txtDueDat")));
return this.__mt_txtDueDat;
}
set {
this.__mt_txtDueDat = value;
this.SetNativeField("txtDueDat", value);
}
}
[MonoTouch.Foundation.Connect("txtName")]
private MonoTouch.UIKit.UITextField txtName {
get {
this.__mt_txtName = ((MonoTouch.UIKit.UITextField)(this.GetNativeField("txtName")));
return this.__mt_txtName;
}
set {
this.__mt_txtName = value;
this.SetNativeField("txtName", value);
}
}
[MonoTouch.Foundation.Connect("txtRecipients")]
private MonoTouch.UIKit.UITextView txtRecipients {
get {
this.__mt_txtRecipients = ((MonoTouch.UIKit.UITextView)(this.GetNativeField("txtRecipients")));
return this.__mt_txtRecipients;
}
set {
this.__mt_txtRecipients = value;
this.SetNativeField("txtRecipients", value);
}
}
[MonoTouch.Foundation.Connect("cmdDoneDescription")]
private MonoTouch.UIKit.UIButton cmdDoneDescription {
get {
this.__mt_cmdDoneDescription = ((MonoTouch.UIKit.UIButton)(this.GetNativeField("cmdDoneDescription")));
return this.__mt_cmdDoneDescription;
}
set {
this.__mt_cmdDoneDescription = value;
this.SetNativeField("cmdDoneDescription", value);
}
}
[MonoTouch.Foundation.Connect("cmdSend")]
private MonoTouch.UIKit.UIButton cmdSend {
get {
this.__mt_cmdSend = ((MonoTouch.UIKit.UIButton)(this.GetNativeField("cmdSend")));
return this.__mt_cmdSend;
}
set {
this.__mt_cmdSend = value;
this.SetNativeField("cmdSend", value);
}
}
}
}
在xCode 4中修改xib后:
// WARNING
//
// This file has been generated automatically by MonoDevelop to store outlets and
// actions made in the Xcode designer. If it is removed, they will be lost.
// Manual changes to this file may not be handled correctly.
//
using MonoTouch.Foundation;
namespace iPhoneSolution
{
[Register ("NewTaskView")]
partial class NewTaskView
{
[Outlet]
MonoTouch.UIKit.UIView view { get; set; }
[Outlet]
MonoTouch.UIKit.UIButton cmdAddRecipient { get; set; }
[Outlet]
MonoTouch.UIKit.UIButton cmdPickDateTime { get; set; }
[Outlet]
MonoTouch.UIKit.UITextView txtDescription { get; set; }
[Outlet]
MonoTouch.UIKit.UITextField txtDueDat { get; set; }
[Outlet]
MonoTouch.UIKit.UITextField txtName { get; set; }
[Outlet]
MonoTouch.UIKit.UITextView txtRecipients { get; set; }
[Outlet]
MonoTouch.UIKit.UIButton cmdDoneDescription { get; set; }
[Outlet]
MonoTouch.UIKit.UIButton cmdSend { get; set; }
[Outlet]
MonoTouch.UIKit.UIButton cmdDoSomething { get; set; }
}
}
以下是我用来重现它的步骤:
我真的很感激指点或想法。 太感谢了 WCM
答案 0 :(得分:3)
我有同样的问题,并且能够找出原因和解决方案:
我在2.8之前创建的视图有一个名为view的视图的插座。当我打开头文件时,我发现XCode抱怨视图的声明是重复的名称。
由于这似乎可能是问题的根源,我采取了以下步骤:
1)删除文件所有者的出口列表中的视图出口
2)手动删除头文件中对视图的两个引用
3)将文件所有者的出口列表中的View插座直接链接到视图(我没有将连接拖到头文件中,我将其拖动到设计器区域左侧的视图中) 。如果您忘记执行此步骤,则会收到有关正在加载的nib但未发送视图插座的运行时错误。
希望这有助于您解决问题。
我忘了提到:设计师档案是正确的; MT改变了在设计器文件中识别出口的方式。