【问题标题】:How to make UISegmentedControl act like a UITabBarController?如何使 UISegmentedControl 像 UITabBarController 一样工作?
【发布时间】:2014-10-30 02:08:12
【问题描述】:

选择不同的段时,如何使用UisegringedControl来加载不同的子视图?我是 Objective-c 和 iOS 编程的新手。

或者有没有办法让 UITabBarController 看起来像 UISegmentedControl?

【问题讨论】:

    标签: iphone objective-c ios uisegmentedcontrol


    【解决方案1】:

    对于程序化方法

    在加载视图中:

    {
        NSArray *segments = [NSArray arrayWithObjects:@"Left", @"Right", nil];
    
    
        segmentedControl = [[UISegmentedControl alloc]initWithItems:segments];
        [segmentedControl addTarget:self
        action:@selector(changeSubViews)
        forControlEvents:UIControlEventValueChanged];
        contentView = [UIView alloc]initwithFrame:(the frame where you want the subViews to be displayed)];
        [self.view addSubView:contentView];
    
        }
    
        - (void)changeSubViews
            {
                switch(segmentedControl.selectedSegmentIndex)
                {
                case 0:
                    {
                        [rightView removeFromSuperView];
                        if (leftView ==nil){leftView alloc, init;}
                        [contentView addSubView:leftView];
                        break;
                    }
                case 1:
                    {
                        [leftView removeFromSuperView];
                        if (rightView ==nil){rightView alloc, init;}
                        [contentView addSubView:rightView];
                        break;
                    }
                }
        }
    

    【讨论】:

      【解决方案2】:

      您可以将UIToolbar 添加到根控制器的view。在其中,您将拥有一个 UISegementedControl,其中包含根控制器处理的操作。根据单击的段,您将加载不同的视图并在 UIToolbar 下显示该视图(以及您希望该视图位于下方的任何其他内容)。

      希望这会有所帮助!

      【讨论】:

        【解决方案3】:

        您应该在这篇文章中考虑工匠的回答:UISegmentedControl Best Practice

        这将允许您保持正常的 ViewController 行为(支持旋转、内存警告等),同时允许在其上进行分段控制。

        【讨论】:

          【解决方案4】:

          为此,您可以在视图中创建两个视图并在 .h 文件中为这两个视图创建属性 和 将 IBAction 附加到分段控件并编写这样的代码

          if(self.yourSegmentedControl.selectedSegmentIndex==0)
              {   
              view1.hidden=YES;
                  view2.hidden=NO;
              }
              else if(self.categorySegmentedControl.selectedSegmentIndex==1)
              {  
              view2.hidden=YES;
                  view2.hidden=NO:
              }
          

          希望这会对您有所帮助。

          【讨论】:

          • 我已经知道该怎么做了。但是如何在隐藏非活动子视图的同时显示活动子视图?就像标签栏
          • 为什么不制作两个使用相同分段控件的视图。您可以显示分段控件的选择。
          • 这是我的问题。我不知道该怎么做
          猜你喜欢
          • 2023-04-05
          • 2011-07-04
          • 2017-04-11
          • 2015-11-30
          • 1970-01-01
          • 2015-12-20
          • 1970-01-01
          • 2011-06-05
          • 2021-08-06
          相关资源
          最近更新 更多