展示效果 :
请问 : 实现的步骤是什么 ?
第一步,搭建界面. 注意 : 要销毁当前被弹出的控制器只能使用代码来完成.
第二步,实现数据的传值. 1> 在第一个控制器中,当modal出下一个控制器时将文本框中的内容显示到下一个控制器的导航栏标题中. 2> 在第二个控制器界面中也有一个文本输入框,当销毁第二个控制器界面的时候,需要将文本框中的内容回传到第一个控制器的文本输入框中. 请问 : 如何来实现数据的回传 ? 方法一 代理!
// 步骤一代码实现
------------------------------ HMTwoViewController.m ------------------------------
// 点击了 "Done" 按钮
- (IBAction)didClickDoneItem:(UIBarButtonItem *)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
// 步骤二代码实现 数据顺传
------------------------------ ViewController.m ------------------------------
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *txtContent;
@end
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// 1. 获取导航控制器
UINavigationController *nav = segue.destinationViewController;
// 2. 获取导航控制器的栈顶控制器
HMTwoViewController *two = (HMTwoViewController *)nav.topViewController;
// 3. 设置栈顶控制器的导航栏标题文字
two.navigationItem.title = self.txtContent.text;
}
// 步骤二代码实现 数据逆传
------------------------------ HMTwoViewController.h ------------------------------
@class HMTwoViewController;
@protocol HMTwoViewControllerDelegate <NSObject>
// 协议方法
@optional
- (void)twoViewControllerDidClickDismissButton:(HMTwoViewController *)twoViewController text:(NSString *)text;
@end
@interface HMTwoViewController : UIViewController
@property (nonatomic, weak) id<HMTwoViewControllerDelegate> delegate;
@end
------------------------------ HMTwoViewController.m ------------------------------
@property (weak, nonatomic) IBOutlet UITextField *txtUserInput;
// 点击了 "Done" 按钮
- (IBAction)didClickDoneItem:(UIBarButtonItem *)sender {
// 1. 实现数据的回传
if ([self.delegate respondsToSelector:@selector(twoViewControllerDidClickDismissButton:text:)]) {
[self.delegate twoViewControllerDidClickDismissButton:self text:self.txtUserInput.text];
}
// 2. 销毁当前modal出来的控制器
[self dismissViewControllerAnimated:YES completion:nil];
}
------------------------------ ViewController.m ------------------------------
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// 1. 获取导航控制器
UINavigationController *nav = segue.destinationViewController;
// 2. 获取导航控制器的栈顶控制器
HMTwoViewController *two = (HMTwoViewController *)nav.topViewController;
// 3. 设置栈顶控制器的导航栏标题文字
two.navigationItem.title = self.txtContent.text;
// 4. 设置代理
two.delegate = self;
}
#pragma mark - <HMTwoViewControllerDelegate>
- (void)twoViewControllerDidClickDismissButton:(HMTwoViewController *)twoViewController text:(NSString *)text
{
self.txtContent.text = text;
}
原文:http://www.cnblogs.com/zhujungang/p/5106254.html