新到Xamarin和iOS更新的UILabel所以這可能是一個愚蠢的問題:從另一視圖控制器
基本上,我有一個的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引發了stem.NullReferenceException。你調用的對象是空的。
我嘗試過改變周圍的事情,調用不同的方法序列,但我似乎只能從它所在的類,StatsScreen中調用setStats。
我必須犯一個致命的錯誤,這樣更新UILabel應該不會很困難。
本質上,我有一個Tab控制器(NewGameScreen),其中包含3個選項卡。我希望Tab Controller管理3個子視圖(選項卡),因爲我需要在3個屏幕之間共享數據,並認爲有一個監督類會是有益的,如果我在NewGameScreen中設置了一些變量,我可以更新3個子視圖(其中之一是StatsScreen)。
你會如何推薦我這樣做,我覺得我誤解了ViewController系統。
親切的問候。 Link to full project code
感謝您的幫助。 :)
首先,您嘗試更新View的新實例,而不是(大概)已經存在的實例。您需要獲取對已存在的視圖的引用,並公開一個允許您訪問其控件的屬性或方法。 – Jason
我明白了,感謝您的提示,我會盡力糾正此問題。欣賞它。 – kknehra
如果我正確理解你的例子,StatsScreen繼承自UIViewController,是否正確?如果是這樣,你會實例化這個並添加到UITabBarController父實例;在內部,框架基於默認代碼實例化底層視圖。 –