IOS开发实训第九周周报
总结:
根据小组分工,本周我学习的知识点有:
(1)页面的跳转方式
(2)页面间传值方式
学习知识点归纳
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,直接属性声明,使用代理;
通过这一周的学习,个人页面的跳转逻辑部分的工作已基本完成;
后续任务
与小组其他成员工作的衔接,以及服务端开发
来源:CSDN
作者:夜里惊羽
链接:https://blog.csdn.net/Cait_/article/details/93198732