0

我有两个输入控件同时工作,AB。如果A的值发生变化,则B应移至该值。如果B改变了A应该转移到这个值。如何设置算法?

我尝试创建一个,但它的行为不正确,因为更改会造成循环。任何帮助表示赞赏。

if(A Changed)
change B's value to value of A
if( B Changed)
change A's value to value of B

编辑:真实场景..A:旋转木马 B:滑块

- (void)carouselDidEndScrollingAnimation:(iCarousel *)carousel
{
        [self.slider setValue:self.carousel.currentItemIndex];
}
-(IBAction) sliderChanged:(id) sender{    
    [self.carousel scrollToItemAtIndex:self.slider.value animated:YES];
}

问题:sliderChanged:方法连接到动作valuechanged

因此,每当轮播移动时,将滑块设置为轮播中的值。当轮播改变时,更改滑块的值

要求:使用滑块滚动轮播,以便对于较大的值,可以通过移动滑块来减少滑动

4

2 回答 2

0

所以现在,按照你的方式,系统有两种响应状态,A-change 和 B-change。当然,A-change 会导致 B-change,反之亦然,所以无论何时发生任何变化,您都会陷入无限循环。

但怎么可能是其他方式呢?好吧,您可以考虑的一件事是更改本身,以及谁在进行更改。在一种情况下,用户输入数据,这是一种变化。显然,你知道你想如何处理这种情况。但是随后发生了另一个变化,程序本身实际上会根据用户的变化而改变一些东西。在这种情况下,您可能想要以不同的方式处理。

这有帮助吗?

于 2013-02-26T21:16:38.400 回答
0

执行此操作的通常方法是在 A 和 B 都更新的幕后拥有一个模型值,然后让 A 和 B观察该模型值并相应地进行更改。您可以通过仅更新现有代码来更改值来执行前者,而后者可以通过使用键值观察来实现。

于 2013-02-26T21:16:48.973 回答