Tabbar应用程序中的PopViewController

时间:2012-06-01 06:21:31

标签: iphone ios uinavigationcontroller uitabbarcontroller uinavigation

我正在开发一个标签栏应用程序。

                           TAB-BAR CONTROLLER
                                   |
          _______________________________________________________
         |                |                 |                  |

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

问题1:我有一个按钮(让我们说退出),点击View 4上的按钮,我想弹出View 2的Detail视图。

因此,在新登录后,新用户不应达到详细信息。

我试过了:

 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:我在View 1的Table View上应用Search,如果单击View 4 SignOut按钮,则想删除Search。如果单击View 4的Signout按钮,我想刷新我的View 1.

要删除搜索,我已完成此代码但未获得所需的结果。

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

 People.isSearchingRecords = NO;

到目前为止,我已经搜索过popViewControllers,但无法找到这个场景。请告诉我如何实现此功能。

3 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

我假设您在appDelegate中保留导航控制器的实例,然后您可以尝试:

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

答案 2 :(得分:0)

最后我得到了问题2的解决方案:

我将NSUserDefault BOOL设置为NO,而在ViewWillAppear中,无论搜索是否为ON,我都会获得UserDefaults值。

点击退出按钮:

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

和视图1:

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

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

但无法找到问题1的解决方案 - 通过另一个标签弹出视图,如果有人有任何想法请告诉我!!