视图跳转的四种方式

本文深入探讨了iOS开发中的Swift编程语言,分享了实际项目中的常见问题解决方法及优化策略,包括数据结构、算法应用、错误处理和性能提升等方面。

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

1、 按钮拉线跳转,直接跳转,经常结合prepareForSegue的方法来实现跳转之前的一些动作(如:传参)

(1)先给建立的连接线segue起个名字fansSegue

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

    if ([segue.identifier isEqualToString:@"fansSegue"]) {

        TDFansTableViewController *tdfans =  (TDFansTableViewController *)segue.destinationViewController;

        //将当前页面的user传递给下一个页面的tdfans.user

        tdfans.user = self.user;

    }


2、tabbar纯代码创建的跳转

(1)其中Home和Position是storyboard的名字

    UIStoryboard * storyboard1 = [UIStoryboard storyboardWithName:@"Home" bundle:nil];

    UINavigationController * homeVC = [storyboard1 instantiateInitialViewController];

    [self addChildViewController:homeVC];


    UIStoryboard * storyboard2 = [UIStoryboard storyboardWithName:@"Position" bundle:nil];

    UINavigationController * positionVC = [storyboard2 instantiateInitialViewController];

    [self addChildViewController:positionVC];


(2)storyboard和pushnavigation结合的跳转(其中TDEditingCurrentTravelDiaryVC是在属性中Storyboard ID设置,下一个页面视图控制器的属性中去设置

            //跳转传参

            UIStoryboard *CameraStoryBoard = [UIStoryboard storyboardWithName:@"Camera" bundle:nil];

            TDEditingCurrentTravelDiaryViewController *vc = [CameraStoryBoard instantiateViewControllerWithIdentifier:@"TDEditingCurrentTravelDiaryVC"];

            [self.navigationController pushViewController:vc animated:YES];

            //diary_id传递给TDCameraViewController中的参数

            vc.diaryId = responseDic[@"data"];

3、presentViewController:(效果是从下往上)两句代码的区别在于,效果不一样,记住pop和push的效果是横向的就行,简单一句话:(其中nv是指要presentview出来的某一个视图控制器)

[self presentViewController: vc animated:YES completion:nil];


4、代码加建立连接的跳转:对于tableviewController有两种情况:一是:创建一个cell,为其建立一个连接跳转到另一个视图控制器,连接是直接建立在cell上的,这种方法经常用到一个方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    UIStoryboard * storyboard5 = [UIStoryboard storyboardWithName:@"Personal" bundle:nil];

    UINavigationController * personalNV = [storyboard5 instantiateInitialViewController];

    TDPersonalViewController * personalVC = (TDPersonalViewController *)personalNV.topViewController;

    personalVC.user = [[TDUser alloc]init];

    personalVC.user.user_id = [self.follow_id intValue];

    [self.navigationController pushViewController:personalVC animated:YES];

}


二是:从当前要跳转的视图控制器中的整个视图控制器拉一条连接线到下一个视图控制器中,

在didselectrowatindexpath中写,

并且在建立的连接线上为其命名:(在StoryBoard Segue的identifier中给它一个名字personalMessageSegue

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    if (indexPath.section == 0 && indexPath.row == 0) {

         [self performSegueWithIdentifier:@"personalMessageSegue" sender:nil];

    }

}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值