Ios SWRevealViewController-右视图控制器
我正在使用在我的应用程序中实现两个侧面导航视图。我遵循故事板的方法,成功地实现了后视图和前视图。我试图通过故事板将右视图设置为与后视图完全相同,但无法实现 我已将显示视图控制器segue设置为“sw_right”,但它似乎未被Ios SWRevealViewController-右视图控制器,ios,objective-c,iphone,swift,swrevealviewcontroller,Ios,Objective C,Iphone,Swift,Swrevealviewcontroller,我正在使用在我的应用程序中实现两个侧面导航视图。我遵循故事板的方法,成功地实现了后视图和前视图。我试图通过故事板将右视图设置为与后视图完全相同,但无法实现 我已将显示视图控制器segue设置为“sw_right”,但它似乎未被-(void)prepareforsgue:(SWRevealViewControllerSegue*)segue sender:(id)sender识别,它被称为“sw_rear”和“sw_front” 我错过了什么? 你要求我看这条线 我没有故事板方面的经验 因此,我
-(void)prepareforsgue:(SWRevealViewControllerSegue*)segue sender:(id)sender
识别,它被称为“sw_rear”和“sw_front”
我错过了什么?
你要求我看这条线 我没有故事板方面的经验 因此,我将粘贴在我的项目中的代码下方,允许使用右侧。 看看我评论的那一节。希望这会让你走上正确的道路 祝你好运
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window = window;
FrontViewController *frontViewController = [[FrontViewController alloc] init];
RearViewController *rearViewController = [[RearViewController alloc] init];
UINavigationController *frontNavigationController = [[UINavigationController alloc] initWithRootViewController:frontViewController];
UINavigationController *rearNavigationController = [[UINavigationController alloc] initWithRootViewController:rearViewController];
SWRevealViewController *revealController = [[SWRevealViewController alloc] initWithRearViewController:rearNavigationController frontViewController:frontNavigationController];
revealController.delegate = self;
// THIS SECTION RIGHT BELOW IS PROBABLY WHAT YOU WANT TO LOOK AT
RightViewController *rightViewController = rightViewController = [[RightViewController alloc] init];
rightViewController.view.backgroundColor = [UIColor greenColor];
revealController.rightViewController = rightViewController;
revealController.bounceBackOnOverdraw=NO;
revealController.stableDragOnOverdraw=YES;
self.viewController = revealController;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
这里是示例项目,这是工作良好,我为您自己制定的,下载链接是
下载项目后,如果您想删除该项目,请使用此链接
在这里,你需要右击前视图控制器,在特定视图控制器中添加UIBarButtonItem
@property (strong, nonatomic) IBOutlet UIBarButtonItem *rightIcon; //this is for left bar button Item
@property (nonatomic) IBOutlet UIBarButtonItem* revealButtonItem; //this is for right bar button Item
并且添加了一些函数是查看DidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
//action for left Swipe
[self.revealButtonItem setTarget: self.revealViewController];
[self.revealButtonItem setAction: @selector( revealToggle: )];
[self.navigationController.navigationBar addGestureRecognizer: self.revealViewController.panGestureRecognizer];
//action for Right Swipe
[self.rightIcon setTarget: self.revealViewController];
[self.rightIcon setAction: @selector( rightRevealToggle: )];
[self.navigationController.navigationBar addGestureRecognizer: self.revealViewController.panGestureRecognizer];
}
Swift
override func viewDidLoad() {
super.viewDidLoad()
//action for left Swipe
self.revealButtonItem.target = self.revealViewController
self.revealButtonItem.action = "revealToggle:"
self.navigationController.navigationBar.addGestureRecognizer(self.revealViewController.panGestureRecognizer)
//action for Right Swipe
self.rightIcon.target = self.revealViewController
self.rightIcon.action = "rightRevealToggle:"
self.navigationController.navigationBar.addGestureRecognizer(self.revealViewController.panGestureRecognizer)
}
我知道问题出在哪里了。在
LoadStoryboard控制器中方法[self-PerformsgueWithIdentifier:SWSEGuerrightIdentifier发送方:nil]代码>已被注释掉。如果我们实现右视图控制器,则必须取消注释。在SWRevealViewController.m的435到444行之间存在一个try-catch条件。只需将语句重新排列如下
[self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];
[self performSegueWithIdentifier:SWSegueFrontIdentifier sender:nil];
[self performSegueWithIdentifier:SWSegueRearIdentifier sender:nil];
现在,我的右菜单/右视图控制器正在工作,即使我没有使用左菜单/右视图控制器 你也可以按照沙德的建议去做。但如果你得到了一个正确的旗帜,你可以替换它
- (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) {}
}
}
与
正如你所看到的,我把它注释掉了
//[self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];
因为这就是给你带来麻烦的人。如果是前部或后部,您也可以这样做非常感谢您的帮助!我会试试看,让你知道!!这种方法是有效的。但是我通过故事板添加的视图不可见。知道为什么吗?我让它工作了。我已经回答了问题所在。非常感谢您的帮助:)关于这个问题,您有什么想法吗?您在nwI遇到了什么问题?我认为您没有滑动正确的视图控制器,correct@Anbu.Karthik我只是在使用工具栏按钮来显示和隐藏后视图和右视图。当我在故事板中将显示视图控制器segue id设置为sw_right
时,未设置rightViewController。除了添加自定义segue之外,在故事板中还有什么我应该做的吗?任何想法ab此问题任何想法ab此问题@Anbu-我只是发现您提供的链接无法下载项目,请让我知道当SWreveal View controller不是您的初始视图时如何实现侧栏。当我推它的时候,它会在视图上方显示它自己的导航栏。有什么想法吗?这个问题有什么想法吗
- (void)loadStoryboardControllers
{
//[self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];
[self performSegueWithIdentifier:SWSegueFrontIdentifier sender:nil];
[self performSegueWithIdentifier:SWSegueRearIdentifier sender:nil];
}
//[self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];