2015-04-19 4 views
2

У меня есть контроллер навигации в качестве моего контроллера начального вида. Контроллер корневого представления - «StartViewController». Этот контроллер просмотра был создан раскадровкой.Xamarin Instantiate Начальный контроллер навигации в раскадровке

автоматически сгенерированная конструктор:

public StartingViewController (IntPtr handle) : base (handle) 
     { 
     } 

Однако, когда я использую этот конструктор, я получаю ошибку «object reference not set to an object», когда я пытаюсь получить доступ к любому из моих торговых точек. Например.

public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      label.Text = "hi"; 
     } 

Однако что-то вроде этого работает отлично:

public override void ViewDidLoad() 
     { 
      base.ViewDidLoad(); 
      Console.WriteLine("hi"); 
     } 

Я пытался использовать другой конструктор:

public StartingViewController() : base ("StartingViewController", null) 
{ 
} 

Для этого, я не получить предыдущую ошибку, но в ViewDidLoad() код не запускается, и он печатает предупреждение, "Ignoring invocation of an instance method on a NULL instance".

ответ

1

Автоматически сгенерированный конструктор является правильным.

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

} 

Вы правильно сделать свой UI логики внутри ViewDidLoad(), ошибка object reference not set to an object говорит вам, что меченый компонент вы пытаетесь установить текст, не существует, или, скорее, ссылка не существует.

Когда вы добавляете компоненты в ViewControllers в раскадровке, вам нужно создать ссылку на файл заголовка.

Для этого нажмите и удерживайте кнопку «Управление» и перетащите ссылку на заголовочный файл View Controller.

enter image description here

При закрытии Xcode Xamarin будет синхронизироваться с вашими изменениями, и вы будете иметь возможность изменять компонент.

+0

Не преступление предназначено, но это нехорошо. Я и большинство людей, которых я знаю, используя Xamarin, не используют XCode. Они используют Xamarin Studio или Visual Studio для создания своих раскадровки. Как мы исправим эту проблему в Xamarin или Visual Studio? Буквально ВСЕ представления, созданные с помощью storybaord, всегда равны нулю, когда приложение попадает в 'ViewDidLoad', что делает этот метод практически бесполезным, если мы вообще не прекратим использование раскадровки. –

1

Для создания контроллера просмотра вам необходимо использовать раскадровку. См. Раздел Вручную создайте раскадровки вручную по адресу Introduction to Storyboards.

Смежные вопросы