ios - SWRevealViewController - RightViewController

标签 ios objective-c iphone swift swrevealviewcontroller

我正在使用 SWRevealViewController用于在我的应用程序中实现两个侧面导航 View 。我按照 Storyboard的方法成功实现了后 View 和前 View 。我尝试通过 Storyboard将右 View 设置为与后 View 完全一样,但无法做到。

我已经将 reveal view controller segue 设置为“sw_right”,但看起来它没有被 - (void)prepareForSegue:(SWRevealViewControllerSegue *)segue sender:(id)sender 识别为“sw_rear”和“sw_front”调用了两次

我错过了什么? enter image description here

- (void)prepareForSegue:(SWRevealViewControllerSegue *)segue sender:(id)sender
{
// $ using a custom segue we can get access to the storyboard-loaded rear/front view controllers
// the trick is to define segues of type SWRevealViewControllerSegue on the storyboard
// connecting the SWRevealViewController to the desired front/rear controllers,
// and setting the identifiers to "sw_rear" and "sw_front"

// $ these segues are invoked manually in the loadView method if a storyboard
// was used to instantiate the SWRevealViewController

// $ none of this would be necessary if Apple exposed "relationship" segues for container view controllers.

NSString *identifier = segue.identifier;
if ( [segue isKindOfClass:[SWRevealViewControllerSegue class]] && sender == nil )
{
    if ( [identifier isEqualToString:SWSegueRearIdentifier] )
    {
        segue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc)
        {
            [self _setRearViewController:dvc animated:NO];
        };
    }
    else if ( [identifier isEqualToString:SWSegueFrontIdentifier] )
    {
        segue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc)
        {
            [self _setFrontViewController:dvc animated:NO];

        };
    }
    //This is never executed even after setting the identifier
    else if ( [identifier isEqualToString:SWSegueRightIdentifier] ) 
    {
        segue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc)
        {
            [self _setRightViewController:dvc animated:NO];
        };
    }
  }
}

最佳答案

enter image description here

这里是示例项目,我自己做的很好,下载链接是

https://www.sendspace.com/file/0l2ndd

下载项目后你想删除项目,使用这个链接

https://www.sendspace.com/delete/0l2ndd/1b1bd537ad852b2fdea9b9a0cce3390f

这里你需要在前 View Controller 上右滑动,在特定的 View Controller 中添加 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

并添加一些功能是View 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)
}

关于ios - SWRevealViewController - RightViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24517100/

相关文章:

ios - iPhone EAAccessoryManager 返回一个空的 NSArray

ios - 无法将类型 '__NSCFString' 的值转换为 'NSDictionary'

objective-c - IOS8:AVFoundation 相机卡住

ios - 从 Xcode 重置 iPad 应用程序内容和设置

ios - @property copy 与 readonly 结合使用是否有意义?

IOS:Convert hex values from the characters.value 结果

objective-c - 在 objective-c 中:按原样打印浮点

ios - 从 Swift 3 调用具有 IAM 授权的 API 网关方法

iphone - 移除或重新激活 uivew 层上的 CABasicAnimation

ios - 如何以编程方式更改文本字段的约束?