我在我的应用程序中使用ECSlidingViewController进行Facebook样式滑动效果。我有2个TopViewControllers,一个左侧和一个右侧视图控制器和一个initviewcontroller,它是一个slidingviewcontroller子类。
1。 InitViewController:ECSlidingViewController
2.MainViewController(TopViewController)
3.LeftMenuViewContrller(UIViewController)
4.RightMenuViewController(UIViewController)
5.DetailViewController(TopViewController)
我的MainViewController上有tableview,其中包含日历事件。问题是我想通过单击 tableView:didSelectRowAtIndexPath:方法中的事件来将MainViewController转到DetailViewController,以显示事件详细信息,这是另一个带有一些动画的topview控制器(我无法得到)远)。我正在使用以下代码将我带到DetailViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
DetailsViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"details"];
self.slidingViewController.topViewController = newTopViewController;
[self.slidingViewController resetTopView];
}
这是我的viewDidLoad方法
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.layer.shadowOpacity = 0.75f;
self.view.layer.shadowRadius = 10.0f;
self.view.layer.shadowColor = [UIColor blackColor].CGColor;
if (![self.slidingViewController.underLeftViewController isKindOfClass:[LeftViewController class]]) {
self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Left"];
}
if (![self.slidingViewController.underRightViewController isKindOfClass:[RightViewController class]]) {
self.slidingViewController.underRightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Right"];
}
[self.view addGestureRecognizer:self.slidingViewController.panGesture];
}
我想获得类似UINavigationController或Modal样式的动画
[self.navigationController pushViewController:newTopViewController animated:YES];
或
[self presentViewController:newTopViewController animated:YES completion:nil];
请帮忙。谢谢。
答案 0 :(得分:0)
您使用的是Storyboard吗?你能进行一次冥想吗?在故事板中设置名称,链接和样式为Modal以及Transition。
在你的DidSelectRowAtIndex中放这个
[self performSegueWithIdentifier:@"eventDetail" sender:@(indexPath.row)];
然后声明这个方法
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"eventDetail"])
{
DetailsViewController *destViewController = segue.destinationViewController;
destViewController.eventRow = sender;
}
// You can test for other Segue names here
}
然后在DetailsViewController.h中放入
// Allows sending View Controller to give this controller data
@property (nonatomic, strong) int *eventRow;
在.m put
@synthesize eventRow;
现在在DetailsViewController中它应该为它设置动画,并且将禁用滑动(除非您将所有ECS位声明为正常)。您还有一个Int eventRow,它告诉您单击了哪个单元格。
您可以创建一个后退按钮并执行此操作;
[self dismissViewControllerAnimated:YES completion:nil];
修改
或者你可以尝试这个,但我不确定它是否会动画加上你需要弄清楚如何传递东西,也许是两者的结合......
UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"eventDetail"];
CGRect frame = self.slidingViewController.topViewController.view.frame;
self.slidingViewController.topViewController = newTopViewController;
self.slidingViewController.topViewController.view.frame = frame;
[self.slidingViewController resetTopView];