Как передать диспетчер представлений данных через панель вкладок Контроллер
Я хочу передать datum из контроллера вида, чтобы просмотреть контроллер через контроллер панели вкладок.
Я имею в виду, моя раскадровка такая.
View Controller → Tab Bar Controller → VC1/VC2/VC3
Для этого я попытался использовать PrepareforSegue
, но это не удалось.
Код здесь.
(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
friendsDetailViewController* vc = [[friendsDetailViewController alloc] init];
vc = (friendsDetailViewController*)[segue destinationViewController];
vc.candidateid = [[NSString alloc] init];
vc.candidateid = [candidateid objectAtIndex:selectedIndexPath.row];
Хотя я пытался передать данные из VC в VC1, SIGABT
произошло в последней строке.
Обновление:
Я понял, как это сделать. Вот script:
friendsDetailViewController* vc = [[friendsDetailViewController alloc] init];
UITabBarController* tbc = [segue destinationViewController];
vc = (friendsDetailViewController*)[[tbc customizableViewControllers] objectAtIndex:0];
Во-первых, я должен подключить контроллер панели вкладок.
Во-вторых, извлеките каждый указатель View View.
Вы можете выбрать с помощью objectIndex.
Ответы
Ответ 1
В childviewcontrollers контроллеров панели вкладок вы можете легко передавать данные с помощью
[self.parentViewController.view setAccessibilityValue:@"your data"];
и может легко получить доступ к этим данным в других дочерних контроллерах просмотра на вкладке
или вы можете добавить объект в nsuserdefaults для некоторого ключа и прикрепить этот ключ в parentviewcontroller.view..
получить этот объект, используя objectforkey из nsuserdefaults в следующем диспетчере просмотра
Ответ 2
У меня была такая же проблема.
У меня был NSString, который я потерял, чтобы отправить его следующим образом:
View Controller → Tab Bar Controller → VC1/VC2/VC3
Прежде всего я создал классы ViewController-s и TabBarController и связал их с раскадровкой.
Это сработало для меня:
Сначала можно отправить данные из ViewController в TabBarController:
- добавьте segue для подключения ViewController и TabBarController в раскадровке и назовите его:
toMyTabController
-
добавить свойство u хотите изменить в TabBarController:
@property (strong, nonatomic) NSString *name;
-
добавьте этот метод где-нибудь в ViewController.m:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"toMyTabController"])
{
MyTabController *tabController = (MyTabController *)segue.destinationViewController;
tabController.name = @"SOME AWESOME NAME";
}
}
=============================================== ===================================
Теперь давайте отправьте данные из TabBarController в ViewController
-
Добавить свойство для каждого ViewController, куда вы хотите отправить информацию, и давайте назовите его имя (так креативно)
добавьте это в ** ViewController1.h, ViewController2.h, ViewController3.h
@property (strong, nonatomic) NSString *name;
-
добавьте это в ViewController1.m, ViewController2.m, ViewController3.m
@synthesize name;
-
перейдите в TabBarController.m и добавьте это в метод ViewDidLoad:
for (UIViewController* myController in self.viewControllers)
{
if([myController respondsToSelector:@selector(setName:)])
{
[myController performSelector:@selector(setName:) withObject:self.name];
}
}
Это все,
Надеюсь, поможет. Удачи