在这种情况下我有tabbar控制器和导航控制器之间 两个VC,这意味着我首先想要在第一个VC和tabbar控制器之间传递数据,其次我想将相同的数据从标签栏控制器传递到导航控制器,最后我想到最后一个VC,我搜索了例如网但我没有找到任何有用的东西。
请你能帮我在这两个视图控制器之间传递数据,任何一个例子都会很棒,很棒。
答案 0 :(得分:2)
在故事板中为segue设置一个标识符(单击segue然后在右侧菜单上转到属性检查器),然后您可能需要单击单元格以在didSelectRowAt
中创建segue,在那里:
self.performSegue(withIdentifier: "YOUR IDENTIFIER", sender: DATA TO PASS or nil)
然后创建segue函数
override func prepare(for segue: UIStoryboardSegue, sender: Any!){
if (segue.identifier == "YOUR IDENTIFIER") // good to have if you have multiple segues
{
let secondVC = segue.destination as! SecondViewController
secondVC.str = "DATA" // now you can access public variables and functions from the second viewController
}
}
答案 1 :(得分:0)
您可以使用@Rashwan L答案,并将所有控制器之间的信息传递到最后一个,或者只是在AppDelegate中创建一个变量,并在所需的控制器到达时使用它。
var App: AppDelegate {
return (UIApplication.sharedApplication().delegate as! AppDelegate)
}
App.myVar = "My DATA"
使用时可以使用App.myVar
答案 2 :(得分:0)
我一直试图解决这个问题。目前,我在调用performSelector:
之前创建了一个属性来保存我要传递的数据,然后使用该属性将数据传递到prepareForSegue:
中的相应视图控制器。在使用之后,我把数据弄清楚了。看起来像这样
@property (...) NSString *selectedString;
- (void)methodThatPicksTheData {
self.selectedString = @"someString";
[self performSegue:kSegueIdentifier];
}
- (void)prepareForSegue:(SegueClassWhoseNameICannotRememberRightNow)segue {
if ([segue.identifier isEqualToString:kSegueIdentifier]) {
CustomViewController *vc = segue.destinationViewController;
vc.string = self.selectedString;
self.selectedString = nil;
}
}
它并不完美,但它提供了一种清楚地指定需要传递哪些数据的方法。