我正在开发一个标签栏应用程序。
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,但无法找到这个场景。请告诉我如何实现此功能。
答案 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的解决方案 - 通过另一个标签弹出视图,如果有人有任何想法请告诉我!!