如何在另一个ViewController上访问UITextView

时间:2011-09-19 14:58:35

标签: ios xcode uitextview

我试图将另一个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];

}

2 个答案:

答案 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。按钮按下事件方法应该没问题。