如何将数据从模态视图控制器传递到父视图

时间:2012-11-02 23:00:07

标签: storyboard modalviewcontroller uistoryboardsegue pass-data

我正在为看似如此简单的事情而苦苦挣扎:将数据从模态视图传递给其父级。我已经尝试过无数种方式,令我惊讶的是网上没有太多东西,似乎没有什么能比得上我想做的事情。我正在使用故事板,大多数例子都没有使用seques / storyboards。

如果有人可能为我提供一些示例代码,我会非常感激!

我有一个带有自定义单元格的静态表视图控制器。在细胞内我有一个标签。我想点击当前的单元格视图,其中包含textview。在文本视图中键入数据,然后点击保存/完成按钮以关闭模态视图,并将该数据显示在我单元格中的UILabel上。

我知道这听起来很简单,这里有很多问题,但这件事没什么。一些示例代码将非常受欢迎。我完全坚持构建我的应用程序,直到我得到它才能继续下去!

1 个答案:

答案 0 :(得分:1)

您可以尝试NSUserDefaults来存储textview中的数据,然后将其读回标签。

编辑:如果你不想使用NSUserDefaults,因为它不是“正确的”方式(但很容易),你可以试试这个:

在tableViewController.h中创建一个NSString:

#import <UIKit/UIKit.h>
@interface TestTableViewController : UITableViewController
@property (nonatomic, strong) NSString *string;
@end

在包含textView的viewController.h中添加以下内容:

- (IBAction)doneButton;
@property (weak, nonatomic) IBOutlet UITextView *textView;

在viewController.m中:

- (IBAction)doneButton {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
TestTableViewController *tvc = (TestTableViewController*)[storyboard instantiateViewControllerWithIdentifier:@"TestTableViewController"];
tvc.string = _textView.text;
[tvc setModalPresentationStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:tvc animated:YES];
// ios6 version:
//[self presentViewController:tvc animated:YES completion:nil];}

然后返回你的tableViewController.m显示你单元格的输入数据(你不需要使用标签):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{      
static NSString *CellIdentifier = @"test";
UITableViewCell *cell = [[UITableViewCell alloc] init]; 
if (SYSTEM_VERSION_LESS_THAN(@"6.0")) { 
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; } 
else { 
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
} 
 // Configure the cell...
cell.textLabel.text = _string;

return cell;}

不要忘记将storyboard ID设置为storyViewController的storyboard上的身份检查器!!