Uma*_*Uma 4 iphone objective-c ios swrevealviewcontroller swift
我正在使用SWRevealViewController在我的应用程序中实现两个侧面导航视图.我按照故事板方法成功实现了后视图和前视图.我尝试通过故事板设置与后视图完全相同的正确视图,但是无法做到.
我已将显示视图控制器segue设置为"sw_right",但看起来它没有被- (void)prepareForSegue:(SWRevealViewControllerSegue *)segue sender:(id)sender"sw_rear"和"sw_front"调用两次
我错过了什么?

- (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];
};
}
}
}
Run Code Online (Sandbox Code Playgroud)

这是示例项目,这个工作正常,我为你自己制定,下载链接是
https://www.sendspace.com/file/0l2ndd
下载项目后你要删除项目,使用此链接
https://www.sendspace.com/delete/0l2ndd/1b1bd537ad852b2fdea9b9a0cce3390f
在这里你需要在前视图控制器上右键滑动,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
Run Code Online (Sandbox Code Playgroud)
并添加一些功能 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];
}
Run Code Online (Sandbox Code Playgroud)
迅速
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)
}
Run Code Online (Sandbox Code Playgroud)
我弄清楚问题是什么.在loadStoryboardControllers方法[self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];被注释掉.如果我们实现右视图控制器,则必须取消注释.
| 归档时间: |
|
| 查看次数: |
13165 次 |
| 最近记录: |