IOS开发实训第九周周报

吃可爱长大的小学妹 提交于 2020-01-30 04:49:51

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,直接属性声明,使用代理;

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

后续任务

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!