NSNavgationController自定义切换画面(传送参数)

本文介绍了在iOS应用中如何实现界面之间的切换以及如何在切换过程中传递参数的方法。提供了具体的代码示例,包括自定义的pushViewController和popViewController方法,以及如何修改切换动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果界面切换画面的时候,没有参数传递。我们用系统的切换,


如果要传递参数,那么我们就需要自定义切换方法,找到那个要切换的viewController 然后把需要的信息传送过去,

代码如下:

-(void)pushViewController:(BaseViewController *)_viewControllerwithData:(ActivityData *)_actityData animate:(BOOL)_animate{
    if(_actityData) {
      _viewController.activityData=_actityData;
    }
   [self.navigationController pushViewController:_viewControlleranimated:_animate];

}

-(void)popViewControllerWithData:(ActivityData *)_actityDataanimate:(BOOL)_animate
{
    NSArray*viewControllerArr = [self.navigationControllerviewControllers];
    //returnwhen the controller is root view controller
    if([viewControllerArr count]<2)
    {
      return;
    }
   BaseViewController *preBVC=[viewControllerArr objectAtIndex:[viewControllerArr indexOfObject:self]-1];
    if ([preBVCisKindOfClass:[BaseViewControllerclass]]&&_actityData) {
      preBVC.activityData = _actityData;
       //[preBVCsetTempActivityData:_actityData];
    }
    _state =2;//设置当前viewController的状态;_state 表示当前Viewcontroller的状态,//  0 唤起状态,1 休眠状态 2 准备销毁状态

   [self.navigationController popToViewController:preBVCanimated:_animate];
}



当然我们也可以通过这个思路来更改 切换的动画:
代码如下:



- (void)pushViewController:(UIViewController*)controller
   animatedWithTransition: (UIViewAnimationTransition)transition{
[self pushViewController:controller animated:NO];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0];
[UIView setAnimationDelegate:self];
[UIViewsetAnimationDidStopSelector:@selector(pushAnimationDidStop)];
[UIView setAnimationTransition:transition forView:self.viewcache:YES];
[UIView commitAnimations];
}

-(UIViewController*)popViewControllerAnimatedWithTransition:(UIViewAnimationTransition)transition{
UIViewController* poppedController = [selfpopViewControllerAnimated:NO];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:TT_FLIP_TRANSITION_DURATION];
[UIView setAnimationDelegate:self];
[UIViewsetAnimationDidStopSelector:@selector(pushAnimationDidStop)];
[UIView setAnimationTransition:transition forView:self.viewcache:NO];
[UIView commitAnimations];

return poppedController;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值