我有两个视图控制器......
ViewController 1有一个标签,应该显示通过TextView输入的文本。
ViewController 2有一个TextView,它将文本传递给ViewController 1的标签
为此,我以这种方式使用协议
头文件VC2.h
@protocol TransferTextViewDelegate <NSObject>
-(void)PassedData:(NSString *)text;
@end
@interface VC2 : UIViewController <UITextViewDelegate>
@property (nonatomic, weak)id <TransferTextViewDelegate> delegate;
@property (strong, nonatomic) IBOutlet UITextView *FFTextView;
@property (strong, nonatomic) NSString *title;
- (IBAction)sendTextViewcontent:(id)sender;
@end
在实施文件VC2.m
中#import "VC2.h"
#import "VC1.h"
@interface VC2 ()
@end
@implementation VC2
@synthesize FFTextView;
@synthesize delegate;
@synthesize title;
- (void)viewDidLoad {
[super viewDidLoad];
[FFTextView becomeFirstResponder];
FFTextView.delegate = self;
}
- (IBAction)sendTextViewcontent:(id)sender {
if (delegate) {
title = FFTextView.text;
[delegate PassedData:title];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
在ViewController 1中,就像我说的,这是一个UILabel,它应该显示在ViewController 2的TextView中输入的文本
实施文件VC1.m
-(void)viewWillAppear:(BOOL)animated {
TitoloAnnuncio.text = TitoloAnnuncioInserito;
}
-(void)PassedData:(NSString *)text {
TitoloAnnuncioInserito = text;
}
在头文件VC1.h中实现了这个属性:
@property (strong, nonatomic) IBOutlet UILabel *TitoloAnnuncio;
@property (strong, nonatomic) NSString *TitoloAnnuncioInserito;
我的问题是我无法理解为什么我的标签没有显示文本..它仍然是空的...我无法从ViewController 2中的ViewController传递数据 你能帮忙吗?
答案 0 :(得分:0)
不考虑使用初始小写字母命名变量的问题......
您正在委托方法中设置字符串值,但是,iOS不是OS X,没有绑定,因此只更改属性的值不会自动更改文本字段中显示的值。
您有几个选项,一个是在委托方法中更新显示。
- (void)PassedData:(NSString *)text {
TitoloAnnuncioInserito = text;
TitoloAnnuncio.text = TitoloAnnuncioInserito;
}
另一种方法是在属性值发生变化时在标签中设置显示 - 这样更健壮。
- setTitoloAnnuncioInserito:(NSString *)string {
_TitoloAnnuncioInserito = string;
self.TitoloAnnuncio.text = string;
}
使用此功能,您可以将委托方法更改为:
- (void)PassedData:(NSString *)text {
self.TitoloAnnuncioInserito = text;
}