我想通过标签栏控制器将视图控制器中的数据传递给视图控制器。
我的意思是,我的故事板是这样的。
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
发生在最后一行。
我已经弄明白了。这是脚本:
friendsDetailViewController* vc = [[friendsDetailViewController alloc] init];
UITabBarController* tbc = [segue destinationViewController];
vc = (friendsDetailViewController*)[[tbc customizableViewControllers] objectAtIndex:0];
首先,我必须附上标签栏控制器 其次,检索每个View Controller的指针 您可以使用objectIndex进行选择。
答案 0 :(得分:0)
在标签栏控制器的childview控制器中,您可以使用
轻松传递数据[self.parentViewController.view setAccessibilityValue:@"your data"];
可以在tabbar的其他子视图控件中轻松访问此数据
或者您可以在nsuserdefaults中为某个键添加一个对象,并将该键附加到parentviewcontroller.view中。 通过在下一个viewcontroller中使用nsuserdefaults中的objectforkey获取该对象
答案 1 :(得分:0)
我有同样的问题。 我有NSString,我已经这样发送了:
View Controller → Tab Bar Controller → VC1/VC2/VC3
除此之外,我创建了 ViewController-s 和 TabBarController 类,并将它们与 storyboard 相关联。
这对我有用:
首先让我们将数据从 ViewController 发送到 TabBarController :
添加属性你想改变 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,并将其命名为name(如此有创意) 将此添加到** 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];
}
}
多数民众赞成, 希望能帮助到你。祝你好运