【问题标题】:UISegmentedControl underneath UINavigationBar, WITHOUT scrollingUINavigationBar 下的 UISegmentedControl,无需滚动
【发布时间】:2011-08-10 14:39:12
【问题描述】:

好吧,我从一天左右开始就遇到了这个问题,这似乎是新 iOS 开发人员中相当普遍的问题。但是,我搜索了 google、appledev、堆栈溢出等。

但是,我无法找到正确的解决方案。没有哪里有明确的答案。

我需要分段控件来更改 tabledata 源或完全显示新视图,都可以。

目前,我有一个解决方案,我将分段控件放在表头中,这可以正常工作,但我不希望分段控件与表格单元格一起滚动。

我试图让它静态且不可滚动,就像导航栏一样。

我在界面生成器中尝试了一些选项,但它们都不起作用,要么它们不显示,要么我因为找不到表格视图而崩溃。

虽然,我知道这与将视图放在视图中有关吗?

如果有人有空闲时间写一篇快速而详细的指南,我将非常感激。

编辑

尝试 1: 在IB中...

查看

-> Tableview(父视图内的tableview)

产生这个错误

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "EventsViewController" nib but didn't get a UITableView.'

【问题讨论】:

    标签: iphone objective-c cocoa-touch uinavigationbar uisegmentedcontrol


    【解决方案1】:

    首先,您需要一个控制器,其中包含分段控件、表格视图和您要添加的其他元素。 由于您的应用程序只有一个控制器,因此可以在其中捕获分段控件的任何更改。捕获事件后,您可以决定是通过更新 tableview 还是加载新视图来重新加载 tableview。

    这个新视图也可以作为模式视图或导航控件的新视图或当前视图的子视图加载。 (电话留给您)。

    优点是分段控件和表格视图将成为 UIView 的一部分,并且滚动视图不会将分段视图滚动到视线之外。另一个优点是新视图将加载到当前视图之上。您可以使用委托方法来处理新视图上的后按事件。您还可以将数据从新视图获取到单个控制器。

    UIView
          --- Segmented control(you can wrap this into a seperate UIView
          --- UITableView (it can also be wrapped into a seperate uiview )
          --- Other widgets
    

    现在你可以有一个单一的视图控制器来控制上面的主 UIView。希望这对您有所帮助。我在我的一个应用中使用了类似的方法。

    【讨论】:

      【解决方案2】:

      你可以做的是有一个分段控件基本上改变表格数据源。基本上,将击中任一段的操作设置为[myTableView reloadData];。然后,在您的数据源方法中,放置一些 if 语句。例如,在 numberOfRowsInSection 下,说:如果(mySegmentedControl.selectedSegmentIndex = 1) //第二个按钮,使用这个数组。明白我的意思吗? 这样你就可以使用一个视图控制器来处理两个(实际上是一个)表。

      【讨论】:

      • 我想做的是阻止分段控件随表格滚动:S
      猜你喜欢
      • 2014-03-20
      • 2018-07-26
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多