我正在使用SWRevealViewController
在我的应用程序中实现侧面菜单。在故事板中,我设置了sw_front
segue。这个segue在每次应用程序启动时加载MainView。现在我想让用户有可能更改第一个显示的viewcontroller。
我该怎么做?我知道有一个属性setFrontViewController:
但是在应用程序启动期间我应该在哪里使用它来加载前端?
我无法在故事板中设置的viewDidLoad
的{{1}}中使用它。这可能不是一个解决方案,所以我需要在每个视图控制器中执行它来抓取并检查"应该将另一个视图控制器加载为第一个或frontViewController
"
答案 0 :(得分:3)
我已经明白你有什么问题以及你想做什么我也有同样的事情要做,所以我所做的就是在swrevealviewcontroller中创建自定义segue,我也在我的代码中提到过。 并修改了两个方法perform和loadstoryboardcontroller方法,你也可以在我的代码中看到。 它也将为您定义。
快乐的编码欢呼。
我的代码如下:
我已经完成了以下需要更改的代码。
- (void)loadStoryboardControllers
{
if ( self.storyboard && _rearViewController == nil )
{
//Try each segue separately so it doesn't break prematurely if either Rear or Right views are not used.
@try
{
[self performSegueWithIdentifier:SWSegueRearIdentifier sender:nil];
}
@catch(NSException *exception) {}
@try
{
[self performSegueWithIdentifier:SWSegueFrontIdentifier sender:nil];
}
@catch(NSException *exception) {}
@try
{
[self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];
}
@catch(NSException *exception) {}
@try
{
[self performSegueWithIdentifier:SWSegueCustomIdentifier sender:nil];
}
@catch(NSException *exception) {}
}
}
#pragma mark - SWRevealViewControllerSegueSetController segue identifiers
NSString * const SWSegueRearIdentifier = @"sw_rear";
NSString * const SWSegueFrontIdentifier = @"sw_front";
NSString * const SWSegueRightIdentifier = @"sw_right";
NSString * const SWSegueCustomIdentifier = @"sw_custom";
#pragma mark - SWRevealViewControllerSegueSetController class
@implementation SWRevealViewControllerSegueSetController
- (void)perform
{
SWRevealControllerOperation operation = SWRevealControllerOperationNone;
NSString *identifier = self.identifier;
SWRevealViewController *rvc = self.sourceViewController;
UIViewController *dvc = self.destinationViewController;
if ( [identifier isEqualToString:SWSegueFrontIdentifier] )
operation = SWRevealControllerOperationReplaceFrontController;
else if ( [identifier isEqualToString:SWSegueRearIdentifier] )
operation = SWRevealControllerOperationReplaceRearController;
else if ( [identifier isEqualToString:SWSegueRightIdentifier] )
operation = SWRevealControllerOperationReplaceRightController;
else if ( [identifier isEqualToString:SWSegueCustomIdentifier])//your conditional segue
operation = SWRevealControllerOperationReplaceFrontController;
if ( operation != SWRevealControllerOperationNone )
[rvc _performTransitionOperation:operation withViewController:dvc animated:NO];
}
答案 1 :(得分:0)
在故事板中,您将自定义segue“sw_front”与viewcontroller连接。这个viewcontroller是每个初始启动你的第一个前视图控制器。因此,如果您需要设置另一个前视图控制器,您只需要检入此控制器。
我在此“sw_front”viewcontroller中设置了一个通知,并在Side Menue View Controller中添加了通知处理程序。
如果您想更改视图,只需触发通知,然后让通知处理程序执行其余操作(设置setFrontViewController:
属性)。
因此,如果您需要关注较新版本,这也可以正常运行并且更新稳定。
如果这些信息对您来说还不够,请给我一个提示,我会在有空的时候发布示例代码或项目。