【Modal】【Code】
1.首先有2个控制器,并且都拥有视图界面。
›
2.点击登录后,第二个页面会从下方上移,那就得在第一个界面中首先创建另外一个界面。然后转向
首先得加载一个协议,这个就是第二个页面的代理。
<LoginViewControllerDelegate>
2).点击登录进行转向
- (IBAction)Login { // 初始化控制器 LoginViewController *login=[[LoginViewController alloc]init]; login.delegate=self; // 弹出登录界面 [self presentViewController:login animated:YES completion:^{ NSLog(@"调用"); }]; }
3. 这里先使用一个代理对象方法,用来将数据从下个控制器获取
#pragma mark LoginViewControllerDelegate 代理方法 -(void)loginSuccess:(NSString *)usernameText { self.usernamelabel.text=usernameText; }
在LoginViewController 中的.h文件中声明一个代理对象
#pragma mark LoginViewControllerDelegate 代理方法 -(void)loginSuccess:(NSString *)usernameText { self.usernamelabel.text=usernameText; }
在上面个控制器创建的username在这里需要声明,让上个控制器能使用
@protocol LoginViewControllerDelegate <NSObject> -(void)loginSuccess:(NSString *)usernameText;
返回上一个控制器
#pragma mark 返回 - (IBAction)back:(id)sender { // 关闭当前的模态控制器(登陆界面本身) [self dismissViewControllerAnimated:YES completion:nil]; }
这里主要是关闭当前控制器,然后将text传入上个控制器。
#pragma mark 登录 - (IBAction)login { // 取出用户名,并传回上一个控制器 NSString *text = self.username.text; [self.delegate loginSuccess:text]; // 关闭当前控制器 [self dismissViewControllerAnimated:YES completion:nil]; }
【modal2】:使用Storyboard【Code】
1.添加一个控制器FirstViewController
2.在storyboard中添加一个viewController并且设置控制器为FirstViewController
3. 将button按钮右键链接到新的View
4.选择modal效果
5.此时就会多出中间的连线
6.FirstViewController 中添加按钮单击事件返回
- (IBAction)back {
[self dismissViewControllerAnimated:YES completion:nil];
}