我试图将另一个ViewController中的UITextView字符串与MainViewController相等。我的意思是用户从另一个ViewController在UITextView中写一些东西,当触摸完成按钮时,UITextView中的字符串应该等于MainViewController中的另一个字符串。我怎样才能访问UITextView ???
我做了这样的事但没有得到任何结果!
#import "AnotherViewController"
@class AnotherViewController;
@interface MainViewContoller : UIViewController {
NSString *main_string;
AnotherViewController *textEntered;
}
-(void)viewDidLoad {
textEntered.TEXT = main_string
}
*** TEXT是我在AnotherViewController上的UITextView的名称。
已编辑:
@interface AnotherViewController : UIViewController {
UITextView *TEXT;
id delegate;
}
@property (nonatomic, retain) IBOutlet UITextView *TEXT;
@property (nonatomic ,retain) id delegate;
@end
@implementation AnotherViewController
@synthesize TEXT ,delegate;
- (IBAction)doneButton {
//!!! problem with compare ! the compiler got me some warning
[self dismissModalViewControllerAnimated:YES];
}
主视图控制器
#import "AnotherViewController.h"
@class Another...;
@interface MainViewControlelr : UIViewController {
NSString *main_string;
TextViewController *textEntered;
}
- (void)viewDidLoad
{
textEntered.delegate = self;
}
- (void) compareText {
[textEntered.TEXT isEqual:main_string];
}
答案 0 :(得分:2)
将mainViewController对象设置为anotherViewController类型的对象的委托。并使用AnotherViewController的委托将消息传递给MainViewController。
在MainViewController内部,当您创建AnotherViewController对象时执行:
anotherVC.delegate = self;
在AnotherViewController中,当您的按钮操作完成并且您想要传回文本时,请将其存储在字符串中。然后将其传递给MainViewController:
[delegate compareText:textView.text];
compareText与NSString参数将是MainViewController类中的一个方法。
编辑:
在您的AnotherViewController.h界面中,声明一个ivar:
id delegate;
然后使用@property(在.h中)和@synthesize(在.m中)作为getter和setter。
然后执行上述操作。
答案 1 :(得分:0)
我认为您创建了一个AnotherViewController指针,但没有设置它。
在访问textEntered.TEXT之前,您应该将textEntered指针设置为您的AnotherViewController对象。
以下是:
在iGhalamViewController类上,在接口声明中创建一个用于设置textEntered对象的属性(可能在iGhalamViewController.h中)@property (assign) AnotherViewController *textEntered;
因此,在根域,您可以在哪里创建此viewcontroller对象。在创建AnotherViewController和iGhalamViewController之后,像这样设置textEntered指针。
AnotherViewController* a = [[AnotherViewController alloc] initWithBlah:blah];
iGhalamViewController* b = [[iGhalamViewController alloc] initWithBlah:blah];
b.textEntered = a;
然后它应该像你期望的那样工作。但是在viewDidLoad之外的其他方法中使用它。在设置textEntered之前调用viewDidLoad probaby。按钮按下事件方法应该没问题。