【问题标题】:segmented control with two views具有两个视图的分段控制
【发布时间】:2012-07-18 09:39:49
【问题描述】:

首先,我在 ViewController 中定义了两个视图。

@interface ViewController : UIViewController
{
    UIView *view1;
    UITableView *view2;
}

我想通过分段控制来切换两个视图。 UIview 显示按钮(图像),另一个显示在列表中。

但我有一些麻烦。

我不知道如何控制这两个视图。 我发现我已经在[self.view]上制作了所有的对象。

我不太了解 superview 和 subview 之间的关系。 现在,我只想在view1上设置它们,我不知道如何实现。

非常感谢。

【问题讨论】:

    标签: ios view uisegmentedcontrol


    【解决方案1】:

    这样的? ...

    -(IBAction)segmentChanged:(UISegmentedControl*)sender {
        if ([sender tag]==0) {
            [UIView animateWithDuration:0.5 animations:^{
                [view1 setAlpha:1.0];
                [view2 setAlpha:0.0];
            }];
        } else if ([sender tag]==1) {
            [UIView animateWithDuration:0.5 animations:^{
                [view1 setAlpha:0.0];
                [view2 setAlpha:1.0];
            }];
        }
    }
    

    您可以使用 setFrame 代替 setAlpha 将视图移出可见区域...

    【讨论】:

    • 您也可以通过 UIVIew 的 .hidden 属性来切换视图的可见性,而不是设置 alpha 或框架。
    【解决方案2】:

    我还没有检查代码,但它应该可以工作:-

    -(IBAction)segmentChanged:(UISegmentedControl*)sender {
        if (sender.selectedSegmentIndex == 0) {
            view1.alpha = 0;
            view1.hidden = NO;
            [UIView animateWithDuration:0.5 animations:^{
                [view1 setAlpha:1.0];
                [view2 setAlpha:0.0];
            } completion:^(BOOL finished){ [view2 setHidden:YES]; }];
        } else {
            view2.alpha = 0;
            view2.hidden = NO;
            [UIView animateWithDuration:0.5 animations:^{
                [view2 setAlpha:1.0];
                [view1 setAlpha:0.0];
            } completion:^(BOOL finished){ [view1 setHidden:YES]; }];
        }
    }
    

    并在 viewDidLoad 设置中

    view2.hidden = YES;
    self.segmentControl.selectedSegmentIndex = 0;
    

    【讨论】:

    • 嗯...非常感谢。以及如何使分段按钮在 view2 中仍然可见? en...我的表格视图尚未初始化...我现在正在填充单元格...
    • 分段按钮,view1 和 view2 应该是你的 viewController 主视图的子视图
    • 只使用 .hidden 或 .alpha 而不是两者都用,那没用。
    • 将 alpha 值设置为 0 会明显地隐藏视图,但该视图仍会存在并且会发生触摸事件,因此您必须从其父层次结构中删除该视图或将其隐藏值设置为“YES” "
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2014-12-06
    • 2016-10-06
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多