objective-c - 如何从一个 View Controller 访问另一个 View Controller 的变量值?

标签 objective-c iphone xcode scope

我在一个 View Controller 中有一个整型变量 (time),我需要在另一个 View Controller 中使用它的值。这是代码:

MediaMeterViewController

// TRP - On Touch Down event, start the timer
-(IBAction) startTimer
{
    time = 0;
    // TRP - Start a timer
    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];

    [timer retain];     // TRP - Retain timer so it is not accidentally deallocated

}

// TRP - Method to update the timer display
-(void)updateTimer
{
    time++;
//  NSLog(@"Seconds: %i ", time); 
    if (NUM_SECONDS == time)
        [timer invalidate];
}

// TRP - On Touch Up Inside event, stop the timer, decide stress level, display results
-(IBAction) btn_MediaMeterResults
{
    [timer invalidate];
    NSLog(@"Seconds: %i ", time);
    ResultsViewController *resultsView = [[ResultsViewController alloc] initWithNibName:@"ResultsViewController" bundle:nil];
    [self.view addSubview:resultsView.view];
}

在 ResultsViewController 中,我想根据它的值处理时间

结果 View Controller

- (void)viewDidLoad 
{
    if(time < 3)
       {// Do something}

    else if ((time > 3) && (time < 6))
       {// Do something else}

//etc...

    [super viewDidLoad];
}

我不太清楚何时需要@property 和@synthesize。在这种情况下是这样吗?任何帮助将不胜感激。

谢谢! 托马斯

最佳答案

time 声明为 MediaMeterViewController 中的一个属性:

@property (nonatomic) NSInteger time;

每当你需要访问另一个对象中的实例变量时,你应该将实例变量声明为一个属性,当你声明一个属性时,你必须始终使用@synthesize(合成getter和该属性的 setter )。

另请注意,在 MediaMeterViewController 中设置 time 时,您必须始终使用 self.time 而不是 time .例如,time = 0; 应该是 self.time = 0;

要从您的 ResultsViewController 访问 time,您可以这样做:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    if (mmvc.time < 3)
    {
        // Do something
     }

    else if ((mmvc.time > 3) && (mmvc.time < 6))
    {
    // Do something else
    }

    // etc...    
}

mmvc 是对您的 MediaMeterViewController 对象的引用。希望这会有所帮助。

关于objective-c - 如何从一个 View Controller 访问另一个 View Controller 的变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548910/

相关文章:

iphone - 在 iPhone 应用程序的 Safari 中打开 Google 网络搜索

ios - 将 Storyboard转换为 Autolyaouts 和尺寸类所需的图像尺寸?

iphone - 无法在 UIImageView 中加载 2 个单独的图像序列

ios - 创建确定当前语言是 RTL 还是 LTR 的 Objective-C 预处理器指令

ios - 如何将 collectionview 单元格扩展到全屏

iPhone 。 UIToolbar 不适用于某些按钮

iphone - 使用 AVPlayer 在 iPhone 上播放许多不同的视频

ios - Swift:从其他 Viewcontroller 调用 PageViewController 中的函数

ios - Braintree Drop In UI View 不在窗口层次结构中

objective-c - "Subclass"核心数据模型