【发布时间】:2014-02-28 03:44:45
【问题描述】:
我首先为可能没有多大意义或非常明显的问题标题道歉。我有一个tabbarcontroller,上面有两个视图(view1 和view2)。它从view1 开始作为初始视图。我需要将一些东西从view1 传递给view2,感谢这个很棒的社区=]。但是,当我运行模拟器时,当我从 view1 开始时,如果我当时在那里传递对象,什么都不会发生,但是如果我先去“看到”view2 然后再回到view1,对象是收到完美。我认为这是view2 的array2 最初不存在的问题,直到我实际要求查看它,因为它是在viewDidLoad 中初始化的。任何帮助表示赞赏。谢谢。
这是我在 view2 中的 viewDidLoad:
[super viewDidLoad];
// Do any additional setup after loading the view.
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
self.array2 =[[NSMutableArray alloc]init];
这是在 view1 中按下按钮的方法,将对象提供给 view2:
object = [self.array1 objectAtIndex:15];
UINavigationController *navi = (UINavigationController *)[[self.tabBarController viewControllers] objectAtIndex:1];
SecondViewController *secViewController = [[navi viewControllers] objectAtIndex:0];
[secViewController.array2 addObject:object];
[secViewController.tableView reloadData];
我“认为问题在于我应该早于viewDidLoad 初始化array2,我猜这将在viewController 的初始化中。我不知道该怎么做,我的VC2.m 没有有一个 init 方法,我不确定如何在进入此屏幕之前将其初始化为 array2。
【问题讨论】:
-
如果您发布您正在使用的代码以提供一些解决方案会有所帮助。
-
^已更新,如果您需要其他代码,请告诉我。谢谢
-
“什么都没有发生”是什么意思?是什么让你认为这个对象没有传递给视图控制器?你期望会发生什么,你看到了什么?也许最重要的是,您如何检验您的假设?
-
我在vc2的array2中放置了一个初始对象:dummy。当事件的顺序去:运行模拟器,vc1(这是初始屏幕),将对象发送到array2,vc2。我所看到的只是我初始化 vc2 的假人。当事件顺序发生时:运行模拟器、vc1、vc2(我在这里看到了虚拟对象)、vc1、将对象发送到数组2、vc2(我现在看到了虚拟对象和新对象)
-
你对问题的分析是正确的。那么你不知道该怎么做呢?写一个init方法?您使用哪种初始化方法取决于控制器的创建方式。如果您在情节提要中进行此操作,则应使用 initWithCoder,如果在 xib 文件中,则使用 initWithNibName:bundle:,如果在代码中,则仅使用 init。
标签: ios uiviewcontroller