0

我在我的应用程序中有一个UISegmentControl,我试图让它切换应用程序商店的视图。香港专业教育学院尝试这种代码没有运气:UISegmentControl切换视图?

- (IBAction)segmentSwitch:(id)sender { 
    UISegmentedControl *segmentedControl = (UISegmentedControl *) sender; 
    NSInteger selectedSegment = segmentedControl.selectedSegmentIndex; 

    if (selectedSegment == 0) { 
    //toggle the correct view to be visible 
    [firstView setHidden:NO]; 
    [secondView setHidden:YES]; 
    } 
    else{ 
    //toggle the correct view to be visible 
    [firstView setHidden:YES]; 
    [secondView setHidden:NO]; 
    } 
} 

有谁知道我怎么能切换视图?任何帮助表示赞赏。谢谢

回答

1

只要这两个视图都是可见的父视图(或窗口)的子视图,那么这些代码就可以工作。

此外,您还可以简化您的IBAction为有点像这样:

- (IBAction)segmentSwitch:(UISegmentedControl*)segmentedControl { 
    //UISegmentedControl *segmentedControl = (UISegmentedControl *) sender; 
    NSInteger selectedSegment = segmentedControl.selectedSegmentIndex; 
+0

这些不是子视图。有没有办法让第一个List1Controller出现,List2Controller第二次出现呢? – Tanner 2010-02-14 14:40:00

+0

除窗口外的所有视图都是子视图。我不明白这个新问题。即使视图具有视图控制器,您的代码仍然可以工作。确保使用视图控制器的“视图”属性(并将它们作为子视图添加到当前可见的视图/窗口中)。 – gerry3 2010-02-14 18:39:48

0

这将有助于了解当这段代码执行时会发生什么的起点is--是的firstView已经初见端倪,并且在代码运行时是否有任何影响?

如果firstView是可见的但代码永远不会隐藏它,我怀疑“firstView”变量实际上并没有连接到视图。你告诉firstView隐藏,所以如果视图永不隐藏,“firstView”可能为零。在此方法中设置断点并检查firstView和secondView以确保它们具有对要操纵的视图的引用。