在 ViewControllers 之间共享信息 [重复]

Posted

技术标签:

【中文标题】在 ViewControllers 之间共享信息 [重复]【英文标题】:Sharing info between ViewControllers [duplicate] 【发布时间】:2015-09-28 09:37:54 【问题描述】:

我有一个多视图应用程序,并且在ViewController 中添加了一些我希望能够从ViewController2 访问的代码。可以在ViewController2 中访问代码的目的是让我可以让它在那里以及ViewController 中运行。我已经将ViewController.h 文件导入ViewController2,但我不确定如何在控制器之间共享数据。代码如下:

ViewController2.h

#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import "ViewController.h"

@interface ViewController2 : UIViewController

@property(nonatomic, readonly) NSUInteger tapCount;
@property NSInteger numberOfLoops;
@property(readonly) NSTimeInterval deviceCurrentTime;
@property (strong, nonatomic) AVAudioPlayer *myPlayer;

- (NSTimeInterval)timeIntervalSinceDate:dateTimePicker;
- (BOOL)playAtTime:(NSTimeInterval)time;

- (IBAction)iconsBtn:(id)sender;

@end

ViewController2.m

#import "ViewController2.h"
#import <AVFoundation/AVFoundation.h>
#import "ViewController.h"

@interface ViewController2 ()

    AVAudioPlayer *_myPlayer;

@end

@implementation ViewController2

- (void)viewDidLoad  //This is where I want to use the data
    [super viewDidLoad];


ViewController.h

#import <UIKit/UIKit.h>
#import <AvFoundation/AVFoundation.h>

ViewController.m

#import "ViewController.h"

我应该怎么做?最重要的是我可以使用ViewController.m 中的一个特定字符串

谢谢

编辑

这与另一个不同,因为我专门询问如何做某事,因为另一个的答案更笼统,我问专门如何分享一个 对象不是多个对象。

【问题讨论】:

这不是我解释的重复!请解释是什么让你认为它是@dandan78 这不是我解释的重复!请解释是什么让你认为它是@Abizern 对象是什么或者你想用它做什么都没有关系;问题是一样的,它在 Apple 文档、任何体面的 ios 教程中都有全面的介绍,尤其是在链接的问题中。如果您在实现那里显示的内容时遇到问题,那么您可以发布一个问题demonstrating the problem 并寻求调试帮助,但是“我有一个字符串/AVAudioPlayer,而那个问题是关于一个数组”不会改变问题的根本性质。 【参考方案1】:

你可以使用 segues 在视图控制器之间传输数据。

查看link了解更多详情

首先,您需要在 .h 文件中将您的 dateTimeString 声明为属性 (ViewController.h)

然后你可以使用

调用segue
  [self performSegueWithIdentifier:@"your_segue_identifier_name" sender:self];

然后

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([[segue identifier] isEqualToString:@"your_segue_identifier_name"])
    

    

【讨论】:

请在投票时使用 cmets。【参考方案2】:

如果你想使用呈现的视图控制器中的属性(dateTimeString),我会选择委托。

【讨论】:

首先,正确命名你的类。 ViewController 和 ViewController2 不是好的 obj-c 编码约定。使用所需的委托方法创建一个 ViewControllerDelegate 协议,例如didSetDateString:(NSString *)dateTimeString. 谢谢,但我会为我的视图控制器命名,什么最适合我,这是一个见仁见智的问题!你的粗鲁完全没有道理!顺便说一句,我不是那个让你失望的人。 我无意粗鲁。 很抱歉,这就是第一次遇到糟糕的编程。感谢您现在尝试提供帮助,对此我表示感谢

以上是关于在 ViewControllers 之间共享信息 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用iOS swift hero框架在两个viewcontrollers之间进行转换?

iOS - 在 ViewController 之间共享数据

在过渡动画期间在两个视图控制器之间共享图像

导航栏和 ViewControllers 视图之间的 NSLayoutConstraint

在 Swift 中的 ViewControllers 和条件 segues 之间传递选定的行

ViewControllers之间的segue问题