在 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之间进行转换?
导航栏和 ViewControllers 视图之间的 NSLayoutConstraint