ios 将 TextView 从 PushView 传递到 PresentingView

标签 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 本身中保留一个 secondView 变量。但这似乎效率不高。理想情况下,我应该在 FirstView 中只有 1 个 NSString 文本字段。这样做的正确方法是什么?谢谢

最佳答案

您可以通过在 Objective-C 中使用委托(delegate)来实现这一点。

在您的 SecondView.h 中,在 Header Inclusion 之后添加以下内容

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

同时将委托(delegate)属性添加到您的 header 中,以便在调用类中访问它们,如下所示(这与 SecondView.h 文件中的其他属性声明一起使用):

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

现在,调用委托(delegate)部分。比如说,你想将 SeconViewUITextView 的文本值保存在 FirstView 类的 strTextViewData 中,当下面的事件发生:

- (IBAction)save:(id)sender
{
    [self.delegate setText:self.txtView.text]; // Assuming txtView is name for UITextView object
}

现在,在 FirstView.h 的委托(delegate)列表中添加 YourDelegateName,如下所示:

@interface FisrtView : ViewController <YourDelegateName>
    @property (nonatomic, reatin) NSString *strTextViewData;
@end

然后在 FisrtView.m 文件中,当您创建 SecondView 类的实例时,将委托(delegate)设置为 self,如下所示:

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

现在,实现委托(delegate)方法:

-(void)setText:(NSString *)strData
{
     self.strTextViewData = strData;
}

将此应用到您的代码中将执行您想要的操作。此外,委托(delegate)是 Objective-C 语言最重要的特性之一,通过这样做,您将开始学习它。

如果您在实现过程中遇到任何问题,请告诉我。

关于ios 将 TextView 从 PushView 传递到 PresentingView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27451759/

相关文章:

ios - 请求桌面站点 WKWebview 在 Swift 4 中不工作

ios - 通过使用其标记号来标识应更改的元素来更改 UITextView 文本

ios - NSLocalizedString 总是返回大写的文本

android - NativeScript 设备/API 访问

iphone - UITextView 带有 "Done"按钮 *和* "Return"键?

ios - 在 UITextView 中编辑中文文本

ios - 无法推送 viewController,因为 navigationController 为 nil

swift - 修改detailNavigationBar但也修改rootNavigationBar

objective-c - 无法在 TableView 中使用 pushViewController 打开详细 View 屏幕

iphone - 修复 iPad 状态栏方向为纵向