从另一个类访问类变量

时间:2012-07-13 01:48:52

标签: objective-c ios xcode4 uiviewcontroller

我有一个管理两个ViewControllers的UITabBarController。第一个是UIViewController,允许用户更改游戏设置。第二个是运行游戏模拟的GLKViewController。

我正在尝试启用Game ViewController从Settings ViewController中获取设置。我在设置视图上有一个表示“速度”的滑块。

我有一个对另一个控制器的引用,但是我无法公开支持我的Slider的变量。

SecondViewController.h

@interface SecondViewController : UIViewController{
    IBOutlet UISlider    * mySlider;
}
property (nonatomic,retain) IBOutlet UISlider    * mySlider;
@end

SecondViewController.m

- (IBAction) mySliderWasMoved:(id)sender;
@implementation SecondViewController
@synthesize mySlider;
- (IBAction) mySliderWasMoved:(id)sender{    
};

ThirdViewController.m

NSArray *tmpVCs = self.parentViewController.tabBarController.viewControllers;
UIViewController *tmpVC = [tmpVCs objectAtIndex:1]; //obtain handle to SecondViewController
//NSNumber *mySpeed = tmpVC.mySlider;  //doesn't see mySlider
NSNumber *mySpeed = [tmpVC mySlider];  //doesn't see mySlider

我是新手,我的项目有很多方面需要学习 - 所以我现在不想学习如何管理数据。我只需要知道如何访问实例变量

2 个答案:

答案 0 :(得分:0)

正如评论所述,

  1. 使用NSDefault保存更改的滑块上的值。在第一次加载应用程序时,您需要设置默认值。

  2. 使用Singleton Object存储值。

  3. 我们理解,引用你“此时并未尝试学习数据持久性。我也不需要架构方向。”但这里的经验法则是你可能会在某些方面访问实例变量方式或其他方式,但我认为采用最好的方法将使您受益匪浅。

    只是我的2美分。

答案 1 :(得分:0)

获得其他人的好处:我抓住了另一个类的句柄,但我没有将返回类型声明为正确的类类型。

替换:

UIViewController *tmpVC = [tmpVCs objectAtIndex:1]; 

使用:

SecondViewController *tmpVC = [tmpVCs objectAtIndex:1]; 

现在我可以访问特定于SecondViewController的属性。