我想添加一个按钮,按下该按钮会将两个滑块锁定在一起,这样两个滑块的值将始终相同。
我有一个使用代码的解决方案,但我想知道是否有办法单独使用界面构建器。
我担心基于代码的解决方案,在高CPU利用率环境中,一个滑块可能会落后于另一个滑块。
答案 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];
}