好吧我想網絡已經調用後刷新我的每一個標籤的標籤內容,和我已經試過洙許多不同的方法來做到這一點,我已經記不清了。有人可以告訴我這是可能的嗎?刷新TabView的
的網絡電話剛剛從服務器調用JSON,並使用它來更新標籤的內容。出於測試目的,我在設置類中設置了一個按鈕。 Settings類是主頁選項卡中的一個視圖,其中有一個名爲refresh的按鈕。單擊時,這會使設備上存儲的JSON與應用程序啓動時從Web調用中調用的設備不同。這節省了我不得不更改服務器上的JSON。
我將帶你通過一些我已經嘗試的技術和將不勝感激,如果有人能告訴我什麼,我做錯了。
我試圖使一個類的實例,並調用刷新方法就像在儀表盤類此
DashboardVC *db = [[DashboardVC alloc] init];
[db refreshMe];
的更新方法是這樣
-(void) refreshMe
{
[self loadView];
[self viewDidLoad];
}
但是沒有運氣。如果我在Dashboard類中調用它,此方法將起作用,但如果我從另一個類調用該方法,則該方法不起作用。我認爲這是我正在實例化一個新類並調用刷新。所以我放棄了這種技術並轉向了下一個方法
這將循環遍歷所有tabBar並更改tabTitles而沒有任何問題,所以我知道它確實正確地循環ViewControllers。
我也嘗試過的觀點方法,如ViewDidAppear,viewWillAppear中等等,沒有運氣每個變體光盤。
我也試圖通過tabController訪問refreshMe方法我在儀表板類了這樣
[[[self.tabBarController viewControllers] objectAtIndex:0] refreshMe];
但同樣沒有運氣,這才導致我的應用程序崩潰。
我通過這個指南
蘋果網站上閱讀,但它似乎並沒有涉及如何刷新單個選項卡的內容。
所有我想要的是讓每個單獨的標籤刷新其內容的網絡電話作出後,並已花了年齡試圖弄清楚這一點,但沒有什麼工作。
所以會很感激,如果有人能告訴我什麼,我做錯了什麼?
Thanx提前....
編輯:
展開什麼我都試過
經過討論與邁克爾,我意識到你永遠不應該調用的loadView作爲對抗蘋果的準則。所以我刪除了對LoadView的任何引用。現在我已經在所有主ViewController中放置了一個名爲RefreshMe的方法,它可以在類中設置視圖,圖像文本等。而這個方法放在ViewDidLoad中。現在我希望能夠在網絡調用發生後調用這些方法,從而有效地刷新應用程序。
我的viewDidLoad現在在我所有的主類中都是這樣的。
- (void) viewDidLoad {
[super viewDidLoad];
[self refreshMe];
}
然後refreshMe方法包含設置屏幕的代碼。
從網絡調用中提取的JSON數據將設置5個選項卡中的每個選項卡的內容,因此在Web調用之後需要刷新所有這些選項卡的內容。
我試着循環瀏覽viewControllers並調用viewDidLoad,它應該依次調用設置類的refreshMe方法,但是沒有任何反應。我使用的代碼是這樣的
NSArray * tabBarViewControllers = [self.tabBarController viewControllers];
for(UIViewController * viewController in tabBarViewControllers)
{
[viewController viewDidLoad];
}
暫時我也包括
NSLog(@"Method called");
每個類的viewDidLoad中測試是否被調用它。但是,僅當我第一次加載應用程序時,或者如果我重新輸入應用程序,纔會打印出該消息。這個方法應該在設置屏幕中點擊刷新按鈕後調用,但不是,我不知道爲什麼。
任何人都知道爲什麼這不工作?
tabBarController設置在appDelegate中。我檢查了self.tabBarController,它是得到5 viewControllers。我可以使用viewWillAppear進行刷新,但是我的主頁選項卡中有動畫,這意味着每次用戶選擇此選項卡時,動畫都會重置,並且看起來很奇怪。我只想讓動畫在第一次再次打開應用程序時運行,或者再次進行Web通話時運行。我會定期打電話給他。 – AdamM
我也理解你關於預先加載的觀點,這有點奇怪。將切換到ViewDidAppear,但我只想阻止每次選擇標籤時運行的動畫 – AdamM
您在控制 - 如果您不需要它們,請不要運行動畫。也許你在你的視圖控制器的初始化方法中設置了一個標誌,表示「應該運行動畫」,然後在運行一次後清除標誌。他們不應該再次運行,除非你殺了並重新啓動應用程序(否則你出於某種原因破壞並重新創建你的視圖控制器)。您的動畫問題不需要與刷新問題聯繫在一起。 – Caleb