Как мне получить доступ к объекту в одном представлении из другого? - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть контроллер панели вкладок с двумя вкладками:

  • tabBar1View с кнопкой с именем "openDifferentView" и текстовым полем "myvalue" с текстом "test"
  • tabBar2View стекстовое поле с именем "txtInTab2"

Когда я нажимаю на openDifferentView, я хочу, чтобы tabBar2View показывал, и передавал значение "test" (от tabBar1View.myvalue.text) до txtInTab2 (в tabBar2View).

Я получаю представление для отображения, используя [self.tabBarController setSelectedIndex:1], но я не уверен, как можно установить значение его текстового поля из этого представления.

Я думал, что это будет возможно:

UIViewController *tab2;
tab2 = [self.tabBarController.viewControllers objectAtIndex:1];
tab2.txtInTab2.text = "something"; //doesn't work
tab2.show; //don't know how to this

Редактировать: я уже добавил IBOutlet @ property / @ synthesize для текстового поля в tabBar2View и #import "tabBar2View.h" в tabBar1View.

Ответы [ 2 ]

0 голосов
/ 03 февраля 2012

Вам нужно использовать делегатов.Я думаю, это поможет вам с началом работы

0 голосов
/ 03 февраля 2012

UIViewController не имеет свойства с именем txtInTab2. txtInTab2 - это свойство, которое вы добавили в свой собственный подкласс UIViewController (который вы назвали TabBar2View).

Код в основном правильный, но вам нужно определить tab2 как тот тип контроллера представления, которым он является на самом деле. Из ваших комментариев ниже, это на самом деле контроллер навигации, поэтому вам нужно сделать это:

#import "MyViewController.h"

UInavigationController *tab2;
tab2 = [self.tabBarController.viewControllers objectAtIndex:1];

//now lets get the frontmost view controller in the navigation controller
//which will (hopefully) be your custom view controller class
TabBar2View *viewController = (TabBar2View *)tab2.topViewController;

//now before we set the label, we need to make sure that the
//view controller's view has actually been loaded from its nib
//file. calling its view property forces it to load
[viewController view];

//now we can set the label
viewController.txtInTab2.text = @"something"; //this will work now

Затем, чтобы действительно показать это, вам нужно сделать это через контроллер панели вкладок, например:

[self.tabBarController setSelectedIndex:1]; //show the second tab
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...