如何在“界面”构建器中添加将两个滑块链接在一起的“锁定”按钮?

时间:2012-02-24 04:20:19

标签: objective-c cocoa interface-builder

我想添加一个按钮,按下该按钮会将两个滑块锁定在一起,这样两个滑块的值将始终相同。

我有一个使用代码的解决方案,但我想知道是否有办法单独使用界面构建器。

我担心基于代码的解决方案,在高CPU利用率环境中,一个滑块可能会落后于另一个滑块。

2 个答案:

答案 0 :(得分:3)

不,单独使用Interface Builder无法做到这一点。

实际上一切都变成了代码,据我所知,Interface Builder是为了改善开发时间而不是为了提高性能而构建的,我在Apple的网站上发现了有关NIB的有趣引用:

  

Xcode与这些框架结合使用可以帮助您进行连接   用户界面对项目中对​​象的控制   响应这些控制

考虑到这一点,一切都将成为代码(某种程度上)。 About NIB files

  

在运行时,这些描述用于重新创建对象和   在应用程序中的配置。加载nib文件时   在运行时,您将获得您所在对象的精确副本   Xcode文档。 nib加载代码实例化对象,   配置它们,并重新建立任何对象间连接   你在你的nib文件中创建的。

如果您真的想避免这种行为,那么您可以做的最好的事情就是从头开始创建小部件,但这将是一个完全不同的问题。

<击> 只是好奇,为什么你不想使用代码?

答案 1 :(得分:2)

在IB中将两个滑块锁定在一起很容易。我从未见过滞后。将该锁定依赖于按下按钮是另一个故事,必须在代码中完成,但它不会太复杂。假设您在IB中连接了出口并在控制器中声明了

-(IBAction)lockSliders:(id)sender {
    [slider1 setContinuous:YES];
    [slider1 takeIntegerValueFrom:slider2]; // or takeFloatValueFrom or takeDoubleValueFrom
    [slider2 setContinuous:YES];
    [slider2 takeIntegerValueFrom:slider1];
 }