【发布时间】:2016-10-21 14:09:23
【问题描述】:
我在 iOS 中使用SWRevealViewController 导航抽屉。我有一个主屏幕,在应用启动时默认显示。我还有其他屏幕,如设置、帮助、关于。因此,当用户在屏幕之间切换时,第一个视图控制器的状态会被重置。我想保持它的状态,如果在屏幕上显示一些数据,那么它不应该被删除。
我正在使用下面的代码在屏幕之间切换。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[self.tableView cellForRowAtIndexPath:indexPath];
if(indexPath.row==0)
{
[self performSegueWithIdentifier:@"home" sender:cell];
[cell setSelected:YES];
}
else if(indexPath.row==1)
{
[self performSegueWithIdentifier:@"settings" sender:cell];
}
else if(indexPath.row==2)
{
[self performSegueWithIdentifier:@"help" sender:cell];
}
else if(indexPath.row==3)
{
[self performSegueWithIdentifier:@“about” sender:cell];
}
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"Segue");
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
UINavigationController *destViewController = (UINavigationController*)segue.destinationViewController;
destViewController.title = [[titles objectAtIndex:indexPath.row] capitalizedString];
if([segue.identifier isEqualToString:@"settings"])
{
self.revealViewController.navigationItem.title = @"Settings";
}
else if([segue.identifier isEqualToString:@"help"])
{
self.revealViewController.navigationItem.title = @"help";
}
else if([segue.identifier isEqualToString:@"about"])
{
self.revealViewController.navigationItem.title = @"about";
}
if([segue isKindOfClass:[SWRevealViewControllerSegue class]])
{
SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;
swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {
UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
[navController setViewControllers: @[dvc] animated: NO ];
[self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
};
}
}
我看到一个解决方案是将 viewController 保留在导航堆栈中,以便 viewController 不会被破坏,当用户转到“home”时它会保留在堆栈中,然后它会从导航堆栈重新启动,而不是再次初始化视图控制器。
【问题讨论】:
-
为什么您没有使用您建议的解决方案?
-
我无法理解如何将它与 swrevealviewcontroller 一起使用。
-
您可以在侧边菜单的 vc 中保留对视图控制器的引用
-
您能否提供此代码或解释更多..
标签: ios objective-c iphone swrevealviewcontroller