我对Objective-c和编程很新,并且刚刚开始在xcode中构建基于选项卡的应用程序。我有三个视图控制器和每个视图中的滑块。我希望第二个和第三个视图中的滑块复制第一个视图中滑块的位置(以及因此值) - 反之亦然。因此,无论用户处于哪个视图,看起来整个过程中只有一个滑块。
我很确定必须有一个更简单的方法来解决这个问题。我希望我已经充分解释了我的问题。
非常感谢任何建议。
答案 0 :(得分:0)
您可以实施一些解决方案。
您可以创建一个滑块并在某些类型的单个对象(如AppDelegate)中对其进行引用,并将其传递给作为子视图添加的相应视图。由于视图只能有一个超级视图,所以您的安全。
您可以使用NSNotifications通知每个滑块值已更改。 NSNotifications允许您传入NSDictionary调用userInfo,以便您可以传递值。
我个人认为1号更清洁,NSNotification很重,当事情真正得到更新时可能会略有延迟。
答案 1 :(得分:0)
将以下目标添加到滑块
- (IBAction)sliderValueChanged:(UISlider *)sender
{
// fire notification here
[[NSNotificationCenter defaultCenter] postNotificationName:@"SliderValueChanged" object:nil];
}
在您的其他视图控制器中,您可以为“SliderValueChanged”添加观察者
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onSliderValueChanged:)
name:"SliderValueChanged" object:nil];
- (void)onSliderValueChanged:(NSNotification *)notification
{
// Adjust your respective view controller's slider here
}
答案 2 :(得分:0)
另一种方法是在更改时将UISlider值存储在NSUserDefaults中。现在,在每个控制器ViewWillAppear方法中,您可以从NSUserDefaults获取该值并为UISlider设置它。这样,无论用户在哪个控制器上看它,它们都会显示相同的值。