4

我有两个问题。

1. 第一个问题

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

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

我是怎么做到的?

2.第二个问题

在第二个故事板中,我有两个控制器与 segue 链接。

当我使用此指令在代码中调用 segue 时:

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

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

为什么?

4

2 回答 2

4

1/ 这样做的一个好方法是制作一个单独的模型对象,可以从两个位置平等地寻址。最简单的方法将属性添加到文件的@interface部分AppDelegate.h,例如

  @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/ 尝试:

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

确保 Segue 是从您的 viewController 连接的,而不是从 Navigation Controller 连接的。

于 2013-03-17T20:17:02.023 回答
2

有多种方法可以在不同故事板中的两个不同视图控制器之间传递数据。我正在使用什么,我想分享

斯威夫特 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 = ""
于 2017-08-18T10:36:52.163 回答