Вызов метода из другого контроллера представления iOS StoryBoard - PullRequest
0 голосов
/ 20 октября 2011

У меня есть ячейка табличного представления с кнопкой, которая при нажатии должна вызывать метод другого контроллера представления.Я следовал этому учебному пособию , в котором показан один из способов получить доступ к другому контроллеру представлений в раскадровках, но он требует жесткого кодирования положения контроллеров представлений.Каждый раз, когда я меняю порядок своих контроллеров представления, мне нужно обновлять свой код, который, как я знаю, испортит.

Вот их метод:

UITabBarController *tabBarController = (UITabBarController *)
self.window.rootViewController;
UINavigationController *navigationController = 
[[tabBarController viewControllers] objectAtIndex:0];
PlayersViewController *playersViewController = 
[[navigationController viewControllers] objectAtIndex:0];
playersViewController.players = players;

Yikes, что это ?!Мы хотим присвоить массив Players свойству Players проигрывателя PlayersViewController, чтобы он мог использовать этот массив в качестве источника данных.Но делегат приложения пока ничего не знает о PlayersViewController, поэтому ему придется пролистать раскадровку, чтобы найти его.Это одно из ограничений раскадровок, которое меня раздражает.В Интерфейсном Разработчике у вас всегда была ссылка на Делегат приложения в вашем MainWindow.xib, и вы могли устанавливать соединения между контроллерами представления верхнего уровня и выходами на Делегате приложения.В настоящее время это невозможно с раскадровками.Вы не можете делать ссылки на делегат приложения из ваших контроллеров представления верхнего уровня.Это печально, но мы всегда можем получить эти ссылки программно.

Кто-нибудь знает более понятный способ?

Я попытался создать IBOutlet в своей ячейке табличного представления для другого контроллера представления,но по какой-то причине я не могу нажать и удерживать клавишу Ctrl и перетащить на другой контроллер представления.

Я также попытался установить IBAction моей кнопки в другом контроллере представления, но мне нужно знать, какая строка была нажата,и единственная информация, которую я могу получить от -(IBAction) addButtonClicked:(id)seder, - это sender информация, которая просто RectButton.

Спасибо!

1 Ответ

0 голосов
/ 21 октября 2011

В качестве обходного пути вы можете установить для свойства tag sender в InterfaceBuilder что-то, а затем просто сравнить [sender tag] в методе addButtonClicked:.Я считаю, что теги int с.

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