Не удается загрузить вид по умолчанию при переходе из UIImageView в Montouch

Я действительно застрял, я не могу правильно перейти к новому UIViewController с помощью жеста касания при нажатии на UIImageView. Я использую раскадровки MonoTouch. Если я создам кнопку на моем первом контроллере представления и перетащу ее на мой второй контроллер представления с помощью нажатия, навигация будет работать правильно, и все элементы управления на моем втором контроллере представления будут созданы. Когда я использую приведенный ниже код в обработчике жестов касания, он переходит ко второму контроллеру представления, но все мои элементы управления имеют значение null, и если я не пытаюсь получить доступ к любому из них, экран просто черный.

Мне пришлось перегрузить конструктор для моего второго контроллера представления, чтобы иметь возможность создать его экземпляр без значений, что, я думаю, может быть проблемой, но я не знаю, что передать исходному конструктору, поскольку все примеры я можно найти, перемещаются из табличных навигаторов и т. д.

вот код в первом контроллере представления:

[Export("HandleImageTap")]
public void HandleImageTap(UITapGestureRecognizer recogniser)
{
    ViewControllerTwo myViewController2 = new ViewControllerTwo();
    myViewController2.SelectedID = 2;
    NavigationController.PushViewController(myViewController2, true);
}

Вот конструктор во втором контроллере представления:

public partial class ViewControllerTwo : UIViewController
{
    public int SelectedID { get; set; }

    public ViewControllerTwo (IntPtr handle) : base (handle)
    {

    }

    public ViewControllerTwo () : base (NSObjectFlag.Empty)
    {

    }

Если бы кто-то мог помочь, я был бы бесконечно благодарен, так как я действительно застрял и был примерно 1/2 дня!

Большое спасибо,

Давок

Изменить: добавлено: base (NSObjectFlag.Empty) во второй конструктор, так как это не изменило поведение.


person davoc bradley    schedule 22.12.2011    source источник


Ответы (1)


Ваш конструктор по умолчанию для ViewControllerTwo() неправильно связывает цепочку, попробуйте использовать:

public ViewControllerTwo () : base (NSObjectFlag.Empty)

Кроме того, вы можете посмотреть UIStoryboardSegue

person miguel.de.icaza    schedule 22.12.2011
comment
Привет, Мигель, спасибо за ваш ответ, я только что попробовал это, и он по-прежнему работает так же, как и раньше, поэтому, например, если я попытаюсь получить доступ к метке на втором контроллере представления, метка будет нулевой, что не является случай, когда я использую кнопку на первом контроллере представления и перетаскиваю ее на второй, используя push. Является ли метод, который я использую, правильным для программного перемещения между контроллерами представления? Спасибо, - person davoc bradley; 22.12.2011
comment
Я заметил, что я могу создать представление во время выполнения и добавить его в this.View.Subviews, и оно будет отображаться, это просто представление, которое я создал с помощью дизайнера раскадровки, которое не отображается и имеет значение null с использованием вышеописанных методов. Есть ли что-то, что мне нужно сделать, чтобы убедиться, что представления, созданные дизайнером, создаются при создании экземпляра контроллера представления? Спасибо - person davoc bradley; 22.12.2011
comment
Трудно сказать из ваших фрагментов выше. Мне нужно было бы посмотреть на автономный тестовый пример. - person miguel.de.icaza; 28.12.2011
comment
Я решил просто создать класс представления, состоящий из элементов управления в нужных мне позициях, а затем добавил его в подпредставления для контроллера представления. У меня есть ощущение, что это может быть дефект, так как я долго изучал его и не мог понять, как заставить его правильно инициализироваться. Приведенные выше фрагменты кода — это все, что вам нужно для навигации между двумя контроллерами представления, когда один из них является UINavigationController, поэтому вы сможете увидеть, получите ли вы то же поведение, что и я, если хотите. - person davoc bradley; 29.12.2011