1

我正在使用Tab-bar應用程序。Tabbar應用程序中的PopViewController

      TAB-BAR CONTROLLER 
            | 
      _______________________________________________________ 
     |    |     |     | 

     View 1   View 2   View 3   View 4 
     |     | 
    SearchingON  Detail View 

問題1:我有一個按鈕(讓說註銷),按鈕上這是對視點4點擊,我要彈出視圖的詳細視圖2.

這樣經過新的登錄新用戶不應該達到詳細視圖。

我曾嘗試:

if ([[NSUserDefaults standardUserDefaults] valueForKey:@"IsChattingON"]) 
{ 
    ChatDetail *chat = [[ChatDetail alloc] initWithNibName:@"ChatDetail" bundle:nil]; 

    [chat BackButtonClicked:nil]; 
} 

,並詳細查看後退按鈕我的代碼是:

-(IBAction)BackButtonClicked:(id)sender 
{ 

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"IsChattingON"]; 

[self.navigationController popViewControllerAnimated:YES]; 
} 

這裏有bool值詳細查看是否打開或沒有用戶默認值。

問題2:我在視圖1的表視圖上應用搜索,並且想要移除搜索是否單擊了視圖4 SignOut按鈕。如果點擊View 4的退出按鈕,我想刷新View 1。

刪除搜索我已經完成了這段代碼,但沒有得到想要的結果。

PeopleController *People = [[PeopleController alloc] initWithNibName:@"PeopleController" bundle:nil]; 

People.isSearchingRecords = NO; 

我已搜索到目前爲止關於popViewControllers但無法找到此場景。請讓我知道如何實現這一功能。

+0

難道你不能在點擊時顯示任何標籤的根屏幕?不管上次狀態如何 – Saad

+0

+1,尼斯和艱難的問題這一次:P ..記得我嗎?.. – mAc

+0

yp!你好嗎? – NSException

回答

0

當用戶點擊註銷你不應該分配一個新的視圖控制器, 相反,你應該做到以下幾點

- (void) logOut 
{ 
    //get the view 2 
    //you should have a way to access view 2 

    [view2 closeChatView]; 
} 

//On view 2 maintain a reference of chat detail controller 
- (void) closeChatView 
{ 
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"IsChattingON"]; 

    //chat is the reference to the chat details controller 
    [chat.navigationController popViewControllerAnimated:YES]; 
} 
+0

其實我有自定義標籤欄,我無法找到任何方式來訪問視圖2,我該怎麼辦? – NSException

+0

自定義標籤欄,你應該創建一個NSMutableArray *視圖的屬性;並在其周圍創建一個屬性,這將保存自定義選項卡欄中的所有視圖,然後訪問視圖編號二[tabbar。views objectAtIndex:1]; –

+0

還有其他方法,更簡單的方法,你可以在view2類中註冊一個通知監聽器,當按下注銷後發送一個通知給view2,這樣你不需要知道視圖2,進一步閱讀關於通知的內容,請檢查這個教程http://iphonebyradix.blogspot.com/2011/07/nsnotificationcenter-tutorial.html,請不要忘記接受答案,如果它的工作:) –

0

我假設你保持的appDelegate導航控制器的情況下,那麼你可以試試這個:

NSArray *viewNavStack = appDelegate.viewNavController.viewControllers; 
    if ([viewNavStack count] > 1) { 
     [appDelegate.overviewNavController popToRootViewControllerAnimated:NO]; 
    } 
0

最後我得到的解決方案問題2:

我設置一個NSUserDefault BOOL爲NO,和我n ViewWillAppear無論搜索是否爲ON,我都會得到UserDefaults值。

在Signout點擊按鈕:

[[NSUserDefaults standardUserDefaults]setBool:NO forKey:@"SearchingON"]; 

和查看1:

 isSearchingRecords = [[NSUserDefaults standardUserDefaults] boolForKey: @"SearchingON"]; 

    if (isSearchingRecords) 
    { 
     self.btnSearchCancel.hidden = NO; 
    }else 
    { 
     self.btnSearchCancel.hidden = YES; 
    } 

,但無法找到問題1的解決方案 - 通過另一個標籤流行的觀點,如果任何一個有任何想法請讓我知道!

相關問題