0

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

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

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

SecondViewController.h

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

第二视图控制器.m

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

第三视图控制器.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

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

4

2 回答 2

0

正如评论中提到的,

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

  2. 使用单例对象来存储值。

我们理解,引用您的话“此时不想学习数据持久性。我也不需要架构指导。”但这里的经验法则是,您可能能够以某种方式访问​​实例变量或其他,但我认为拥有最好的方法将使您受益匪浅。

只是我的2美分。

于 2012-07-16T04:43:46.133 回答
0

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

代替:

UIViewController *tmpVC = [tmpVCs objectAtIndex:1]; 

和:

SecondViewController *tmpVC = [tmpVCs objectAtIndex:1]; 

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

于 2012-07-19T21:01:11.307 回答