iOS实训笔记—页面跳转与传值

本文是iOS开发实训第九周周报,重点介绍了页面跳转的三种方式,包括UITableBarController、UINavigationController和模态视图中的界面跳转。同时,讲解了页面间传值的方法,如属性传值、block传值和使用代理方法。经过学习,作者已完成个人页面的跳转逻辑,下一步将进行与小组成员的协同工作和服务端开发。

iOS开发实训第九周周报

学习知识点归纳

1. 页面跳转的方式

(1)UITableBarController(标签栏控制器)中的界面跳转

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

    //创建标签栏控制器tabBarController
    UITabBarController *tabBarController = [[UITabBarController alloc] init];

    //初始化firstView和secondView
    FirstViewController *firstView = [[FirstViewController alloc] init];
    SecondViewController *secondView = [[SecondViewController alloc]init];

    //添加子视图控制器firstView和secondView
    [tabBarController addChildViewController:firstView];
    [tabBarController addChildViewController:secondView];

    //设置底部标签栏上的title
    firstView.tabBarItem.title = @"first";
    secondView.tabBarItem.title = @"second";

    self.window.rootViewController = tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

(2)UINavigationController(导航控制器)中的界面跳转

    [self.navigationController pushViewController:secondView animated:YES];  // 跳转到secondView的实现方法
   
    [self.navigationController pushViewController:firstView animated:YES]; //跳转到firstView界面
    
    [self.navigationController popViewControllerAnimated:YES]; //返回上一页面
    
    [self.navigationController popToRootViewControllerAnimated: YES ];  //返回根控制器

(3)模态视图中的界面跳转

	// 跳转到模态视图SVC
	[ self presentViewController:SVC animated: YES completion:nil];
	
	// 退出当前视图
	[ self dismissViewControllerAnimated: YES completion: nil ];

2. 页面间传值方式

(1)属性传值,当A跳转到B之前,设置B的controller的属性值,如下,先设置second的flag的值,作为传递的参数,再进行页面跳转

SecondViewController *second = [[SecondViewController alloc] initWithNibName:@'SecondViewController'bundle:nil];

second.flag = 0;//赋值

跳转传值

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

(2)block传值,定义一个block,参数为字符串

typedef void (^ablock)(NSString *str);

@property (nonatomic, copy) ablock block;

// 在B试图控制器中,当输入名字,点击,返回A页面

- (IBAction)blockMethod:(id)sender {

	self.block(self.nameTextField.text);
	
	[self dismissViewControllerAnimated:YES completion:nil];

}

// 在A页面显示,回调block,获取block值,将block值赋给nameLabel

- (IBAction)showSecondWithBlock:(id)sender {

	SecondViewController *second = [[SecondViewController alloc] 
	
	initWithNibName:@'SecondViewController'bundle:nil];
	
	[self presentViewController:second animated:YES completion:nil];
	
	second.block = ^(NSString *str){
	
		self.nameLabel.text = str;
	
	};

}

(3)使用代理方法

//  1.0 声明代理
@protocol secondViewDelegate

-(void)showName:(NSString *)nameString;
	
@end

// 页面中使用代理
@interface SecondViewController: UIViewController

@property (nonatomic, weak)id<secondViewDelegate> delegate;

@property (nonatomic, copy) ablock block;

@end

// 2.0 使用代理方法
- (IBAction)delegateMethod:(id)sender {

[self.delegate showName:self.nameTextField.text];

[self dismissViewControllerAnimated:YES completion:nil];

}

// 3.0 在接受页面实现代理方法	
-(void)showName:(NSString *)nameString{

self.nameLabel.text = nameString;

}

总结

本周学习了页面跳转的三种方式,分别适用于TabBar,NavBar以及模态视图;以及页面间传值和回调的方式:block,直接属性声明,使用代理;

通过这一周的学习,个人页面的跳转逻辑部分的工作已基本完成;

后续任务

与小组其他成员工作的衔接,以及服务端开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值