новой для Xamarin и прошивкой, так что это может быть глупый вопрос:Обновление UILabel из другого ViewController
В принципе, у меня есть UITabBarController, NewGameScreen.cs (с NewGameScreen.designer.cs и NewGameScreen.xib) и, как один вкладок, у меня есть StatsScreen.cs (с StatsScreen.designer.cs и StatsScreen.xib). StatsScreen имеет некоторые метки, которые я хочу изменить от NewGameScreen, поэтому я создал новый объект StatsScreen:
StatsScreen stats = new StatsScreen();
Тогда я вызываю метод как таковой:
stats.setStats (day, debt, money, bank, health, location); // All of the parameters here are local variables
Метод выглядит следующим образом:
public void setStats (int day, long debt, long money, long bank, int health, string location)
{
LabelDay.Text = day.ToString();
LabelDebt.Text = debt.ToString();
LabelMoney.Text = money.ToString();
LabelBank.Text = bank.ToString();
LabelHealth.Text = health.ToString();
LabelLocation.Text = location;
}
Когда я бегу и нажмите кнопку, я получаю:
Sy Исправлено. Исключение исключений NullReference. В экземпляре объекта не задана ссылка на объект.
Я попытался изменить ситуацию, вызвав разные последовательности методов, но, похоже, я могу только вызвать setStats из класса, в котором он находится, StatsScreen.
Должно быть, я совершил фатальную ошибку, поэтому не обязательно будет обновлять UILabel, как это.
По существу, у меня есть контроллер табуляции (NewGameScreen) с 3 вкладками. Я хочу, чтобы контроллер табуляции управлял 3-мя подзонами (вкладками), поскольку мне нужно обмениваться данными между 3-мя экранами и думать, что наличие надзора класса будет что если я установлю некоторые переменные в NewGameScreen, я могу обновить каждое из трех подзонов (один из них - StatsScreen).
Как бы вы порекомендовали мне пойти по этому поводу, я чувствую, что не понимаю систему ViewController.
С уважением. Link to full project code
Спасибо за помощь. :)
Во-первых, вы пытаетесь обновить новый экземпляр представления, а не экземпляр, который (предположительно) уже существует. Вам нужно получить ссылку на представление, которое уже существует, и выставить свойство или метод, которые позволят вам получить доступ к его элементам управления. – Jason
Я вижу, спасибо за подсказку, я постараюсь исправить это. Ценить это. – kknehra
Если я правильно понимаю ваш пример, StatsScreen наследует UIViewController, правильно? Если это так, вы должны создать экземпляр этого объекта и добавить к родительскому экземпляру UITabBarController; внутренне структура создает экземпляр базового представления на основе кода по умолчанию. –