iphone – 如何将值传递给父视图控制器?
我是ios开发的新手并坚持这个问题: 我正在使用故事板并且有一个导航控制器vcA,其中包含一个TableView,它显示了MutableArray中的一些数据(在同一类的viewdidload中初始化).选择任何单元格后,将显示第二个视图控制器vcB,其中包含TextField和一个名为“添加到列表”的按钮. 我想要的是当我在TextField中输入一些文本并按下“添加到列表”按钮时,文本应该被添加到上一个视图的数组中(显示在TableView中),当我点击“返回”按钮时在vcB的导航栏上,vcA应该显示更新的TableView,其中包含新条目(位于列表顶部).基本上我想将vcB的TextField中的文本添加到vcA数组中,并在单击BACK按钮后显示新数组. 我已经搜索了很多关于这个问题的内容,并且似乎发现委托和协议是实现预期结果的方法,但是我无法理解委托. 解决方法
我有第二个视图控制器在这个例子中将自己呈现为模态:
在第二个视图控制器h文件中: @protocol SecondViewControllerDelegate <NSObject> - (void)addItemViewController:(id)controller didFinishEnteringItem:(NSString *)item; @end @interface SecondPageViewController : UIViewController <UITextViewDelegate> { NSString *previouslyTypedInformation; } @property (weak,nonatomic) IBOutlet UITextView *textView; @property (nonatomic) NSString *previouslyTypedInformation; @property (nonatomic,weak) id <SecondViewControllerDelegate> delegate; 在第二个视图中,控制器m文件确保合成属性并添加然后添加: - (IBAction)done:(id)sender { NSString *itemToPassBack = self.textView.text; NSLog(@"returning: %@",itemToPassBack); [self.delegate addItemViewController:self didFinishEnteringItem:itemToPassBack]; //dismiss modal view controller here } 然后在第一个视图中控制器h文件将其设置为委托: @interface FirstPageViewController: UIViewController <SecondViewControllerDelegate> @property (nonatomic) NSString *returnedItem; 然后在第一个视图控制器的m文件中合成并添加方法: - (void)addItemViewController:(SecondPageViewController *)controller didFinishEnteringItem: (NSString *)item { //using delegate method,get data back from second page view controller and set it to property declared in here NSLog(@"This was returned from secondPageViewController: %@",item); self.returnedItem=item; //add item to array here and call reload } 现在你有了返回的文字!您可以在第一个视图控制器的viewDidLoad中将字符串添加到数组中并调用 [self.tableView reloadData]; 它应该工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |