在多个视图中复制滑块

时间:2014-01-03 22:23:08

标签: ios uitabbarcontroller uislider

我对Objective-c和编程很新,并且刚刚开始在xcode中构建基于选项卡的应用程序。我有三个视图控制器和每个视图中的滑块。我希望第二个和第三个视图中的滑块复制第一个视图中滑块的位置(以及因此值) - 反之亦然。因此,无论用户处于哪个视图,看起来整个过程中只有一个滑块。

我很确定必须有一个更简单的方法来解决这个问题。我希望我已经充分解释了我的问题。

非常感谢任何建议。

3 个答案:

答案 0 :(得分:0)

您可以实施一些解决方案。

  1. 您可以创建一个滑块并在某些类型的单个对象(如AppDelegate)中对其进行引用,并将其传递给作为子视图添加的相应视图。由于视图只能有一个超级视图,所以您的安全。

  2. 您可以使用NSNotifications通知每个滑块值已更改。 NSNotifications允许您传入NSDictionary调用userInfo,以便您可以传递值。

  3. 我个人认为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设置它。这样,无论用户在哪个控制器上看它,它们都会显示相同的值。