У меня есть решение с XIB, созданным в IB 3.x.Когда я редактирую их в xCode 4 и сохраняю изменения, все мои файлы Xib перепутаны и ничего не показывают - только пустые экраны.
Возможно, проект не обновился правильно?Если у кого-то есть какие-либо идеи, пожалуйста, дайте мне знать как можно скорее - я не могу редактировать ни один из XIB!
Настройка: 1. Я дважды проверил, что МТ и MD обновлены.2. Компиляция для ios 4.x 3. Проблема воспроизводима на 100%, учитывая мои настройки и решение
Вот файлы до и после.После них приведены точные шаги, которые я использовал для создания проблемы.
Из-за ограничения в 5 КБ я не могу опубликовать все файлы, но суть в том, что в новых файлах Xcode 4 есть полные методы получения и установки.
**** ОРИГИНАЛЬНЫЙ КОД 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);
}
}
}
}
После изменения xib в xCode 4:
// 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; }
}
}
Вот шаги, которые я использовал для его воспроизведения:
- Запустите приложение и убедитесь, что отображаемое представление правильно отображается
- , дважды щелкните файл пера, чтобы открыть его в xCode 4
- Перетащите круглую прямоугольную кнопку на представление
- Выберите Сохранить "xxxx"
- Запустите приложение в Debug | iPhoneSimulator.Он отображает вид.
- остановите приложение
- дважды щелкните по sib, чтобы открыть его в xCode 4.
- Control-Перетащите с кнопки на .h
- Создание выхода с именем cmdDosomething
- Закройте и сохраните файл.
- Установите точки останова в начале ViewDidLoad и ViewDidAppear для представления.
- Перезапустите приложение
- Нажмите на вкладку, которая отображает вид.ViewDidAppear ударил.ViewDidLoad НЕ ударил.Появится представление NOT , только пустая белая область над панелью вкладок
- Случайно щелкните по вкладкам.Все остальные виды отображаются нормально.ViewDidAppear обычно вызывается для рассматриваемого представления.
Я был бы очень признателен за указатели или идеи.Спасибо миллион WCM