Как получить доступ к UITextView на другом ViewController - PullRequest
1 голос
/ 19 сентября 2011

Я пытаюсь выровнять строку UITextView из другого ViewController в MainViewController.Я имею в виду, что пользователи пишут что-то в UITextView из другого ViewController, и при нажатии на кнопку «Готово» строка в UITextView должна совпадать с другой строкой в ​​MainViewController.Как я могу получить доступ к UITextView ???

Я сделал что-то подобное, но не получил никакого результата!

#import "AnotherViewController"

@class AnotherViewController;

@interface MainViewContoller : UIViewController {

    NSString *main_string;
    AnotherViewController *textEntered;

}

-(void)viewDidLoad {

textEntered.TEXT = main_string

}

*** TEXT - это имя моего UITextView на AnotherViewController.

РЕДАКТИРОВАНИЕ:

@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 ]

2 голосов
/ 19 сентября 2011

Установить объект mainViewController в качестве делегата объекта другого типа ViewViewController. И используйте этот делегат из AnotherViewController для передачи сообщений в MainViewController.

Внутри MainViewController, когда вы создаете объект AnotherViewController, выполните:

anotherVC.delegate = self;

А в AnotherViewController, когда действие кнопки выполнено и вы хотите передать текст обратно, скажем, сохранить в строке. Затем передайте его в MainViewController как:

[delegate compareText:textView.text];

CompareText с аргументом NSString будет методом в вашем классе MainViewController.

EDIT:

В вашем интерфейсе AnotherViewController.h объявите ivar:

id delegate;

Затем используйте @property (в .h) и @synthesize (в .m) для получения и установки.

Тогда сделайте выше.

0 голосов
/ 19 сентября 2011

Я думаю, что вы создали указатель 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.Пробная версия viewDidLoad вызывается до того, как вы сможете установить textEntered.Метод события нажатия кнопки должен быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...