使用segmentend按钮切换3页需要2个点击?

时间:2014-06-02 13:24:04

标签: objective-c segue uisegmentedcontrol

这是我的设置:

主页,个人资料页面,朋友页面。

在每个页面中,都有完全相同的segmentend按钮:[Home |个人资料|好友]

当我点击一个片段时,会调用一个segue并更改页面。

所以,当我在个人资料中时,已经选择了个人资料,我可以点击家庭或朋友;当我这样做,新页面被加载,新的段被选中,如果我愿意,我可以再次这样做。

在故事板中,我只有3页的"一吨"自定义segue(我使用自定义用于动画目的)。

在代码中,我有这个:

(void)moveToPage
{
    if ([self.pageSwitch selectedSegmentIndex] == 1)
    {
         [self performSegueWithIdentifier:@"fromHomeToProfile" sender:self];;
    }
    if ([self.pageSwitch selectedSegmentIndex] == 2)
    {
         [self performSegueWithIdentifier:@"fromHomeToFriends" sender:self];;
    }

}


- (IBAction)pageSwitchButton:(id)sender {
    [self.pageSwitch addTarget:self
                           action:@selector(moveToPage)
                 forControlEvents:UIControlEventValueChanged];
}
这些名字是不言自明的。

我的问题是(我们正在努力): 当我点击一个片段时,它会被选中,但第一次没有任何反应。 如果我点击一个新的段(显然不是当前页面中的段),那么它的工作正常。 基本上,忽略第一个点击,然后第二个点击工作。 所以我必须点击一个页面,然后点击另一个不同的页面才能工作。

有什么想法吗?我有点坚持这个独特的问题:D

1 个答案:

答案 0 :(得分:0)

好的,我确实发现了它;我只是不明白addTarget:action:forControlEvents是如何运作的。

我们只需要把

[self.pageSwitch addTarget:self
                           action:@selector(moveToPage)
                 forControlEvents:UIControlEventValueChanged];
ViewDidLoad中的

,它运作得很好。它必须放在3页。

以下是我获得IRL的解释,如果我错了,请随意评论/添加内容:

addTarget:action:forControlEvents:方法是您的网页所具有的行为。 “当发生这种情况时,请这样做”。因为它在我的Action中,页面只在我第一次点击时才学会了行为,并且知道如何在之后作出反应。为了让页面知道第一次做什么,它必须在创建的最早阶段学习行为,因此在ViewDidLoad中。

因为Action中没有任何内容,您实际上可以完全删除它并删除故事板中的链接。你只需要使用outlet和moveToPage方法就可以了。

我希望这会有所帮助:)