ios将TextView从PushView传递到PresentingView

时间:2014-12-12 20:39:22

标签: ios uitextview pushviewcontroller uitextviewdelegate

我正在尝试执行以下操作,但无法找到直接的答案。它与此相关:Passing uitextfield from one view to another。但不完全是。

我有一个Firstview.m,我从中推送到Secondview.m。 Secondview.m有一个UITextView。我允许用户在Secondview.m上编辑UITextView。现在我想将此文本值存储在Firstview.m中的变量中。一种方法是这样做

在firstview.h中

@property (nonatomic) Secondview *secondView;

这是在Firstview中保留第二个View变量。但这似乎并不高效。理想情况下,我应该只在FirstView中有1个NSString文本字段。这样做的正确方法是什么?感谢

1 个答案:

答案 0 :(得分:3)

您可以通过在Objective-C中使用Delegation来实现此目的。

SecondView.h添加标题后立即添加

@protocol YourDelegateName <NSObject>
   -(void)setText:(NSString *)strData;
@end

还要在您的标头中添加委托属性,以便在调用类中访问它们,如下所示(这与SecondView.h文件中的其他属性声明一致):

@property (nonatomic, weak) id<YourDelegateName> delegate;

现在,来调用委托部分。比如,当发生以下事件时,您希望在UITextView类的SeconView中保存strTextViewData的{​​{1}}的文本值:

FirstView

现在,在- (IBAction)save:(id)sender { [self.delegate setText:self.txtView.text]; // Assuming txtView is name for UITextView object } 代理列表中添加FirstView.h,如下所示:

YourDelegateName

然后在@interface FisrtView : ViewController <YourDelegateName> @property (nonatomic, reatin) NSString *strTextViewData; @end 文件中创建FisrtView.m类的实例时,将委托设置为SecondView,如下所示:

self

现在,实现委托方法:

SecondView *obj = [[SecondView alloc] initWithNibName:@"SeconView" bundle:nil];
obj.delegate = self; // THIS IS THE IMPORTANT PART. DON'T MISS THIS.

将此代码应用于您的代码可以满足您的需求。此外,委托是Objective-C语言最重要的特征之一,通过这样做,您将学习。

如果您在此实施中遇到任何问题,请与我们联系。