2013-03-17 64 views
3

我有两个问题。在两个不同的故事板之间传递数据

第一个问题

在我的项目,我有两个不同的故事板文件:A storyboardB storyboard

我想从(A) controller of (A) storyboard数据(nsstring)传递给(B) controller of (B) storyboard

我怎么做呢?

第二个问题

在第二故事板

我有两个控制器赛格瑞

链当我在该指令的代码调用SEGUE:

[self.navigation controller performSegueWithIdentifier: @"secondViewSegue" sender:self]; 

我有一个消息: "has no segue with identifier 'secondViewSegue' "

为什么?

+0

两个故事板?除了iPad和iPhone的不同屏幕尺寸有不同的故事板以外,在单个架构上分离故事板还有什么实际用途?这甚至有可能吗?如果你想要在用户界面中保持灵活性,为什么不使用XIB呢? – 2013-03-17 19:21:26

+0

@MichaelDautermann完全支持多个故事板。尽管默认情况下加载了初始情节提要,但可以根据需要加载其他情节提要。有可行的用例。 – GoZoner 2013-03-17 19:24:47

回答

3

1 /这样做的一个好方法是制作一个单独的模型对象,可以在两个位置进行同样的处理。而最简单的方法来做到是一个属性添加到您的AppDelegate.h文件的@interface部分,例如:

@property (nonatomic, strong) NSString* sharedString; 

来设置和获取它,你需要类型访问任何文件添加到AppDelegate中说需要它:

#include AppDelegate.h 

然后可以使用...

AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 

    //to set (eg in A controller) 
    appDelegate.sharedString = string; 

    //to get (eg in B controller) 
    NSString* string = appDelegate.sharedString; 

作为替代的属性,你可以在头文件中使用静态变量:

static NSString* staticString; 

这将是访问的任何对象,#imports头文件。尽管不是Objective-C的方式。

对于更详细的情况,您可能需要创建一个单例对象来访问模型数据。

2/TRY:

[self performSegueWithIdentifier: @"secondViewSegue" sender:self]; 

确保Segue公司从你的viewController有线,不是的导航控制器。

+0

第一个问题你可能是对的,唯一的解决办法是在AppDelegate中共享变量.. 第二个问题好的,我解决了 谢谢 – giorgio83 2013-03-17 21:01:38

+0

很好,谢谢 – Ronaldoh1 2015-06-14 05:52:25

1

在不同的故事板中,有两种不同的视图控制器之间传递数据的方法。我使用的是什么,我想在接下来的ViewController分享

斯威夫特3

let storyboard = UIStoryboard(name: "StoryboardName2", bundle: nil) 
    let controller :NextViewController = storyboard.instantiateViewController(withIdentifier: "NextVCIdentifier") as! NextViewController 
    controller.NameofUser = Self.SelectedUser 

声明变量作为

public var NameofUser:String = "" 
相关问题