【问题标题】:What is the best approach to add buttons on top of the screen in Swift在 Swift 的屏幕顶部添加按钮的最佳方法是什么
【发布时间】:2015-10-28 15:02:53
【问题描述】:

我正在尝试制作一个读取日历事件的应用程序,并在 Swift 2 中制作会议列表。我需要让它看起来像这样:

顶部始终可见。该列表将是可滚动的,并且当用户点击不同的日期时,列表将加载不同的数据。此外,当用户滚动到一天结束并继续滚动时,顶部栏中的天数需要调整(天数必须进一步移动)。 我尝试使用带有导航栏的导航控制器来执行此操作。

这是正确的做法吗?

【问题讨论】:

    标签: xcode storyboard swift2 ios9


    【解决方案1】:

    一个不错的方法是只使用一个单独的“容器”视图,它包含按钮,并让滚动视图与这个“容器”处于同一级别。这样顶部的视图将不会滚动。

    关于根据滚动条更改顶部按钮 - 您可以使用 UIScrollViewDelegate 获取确切位置。由于我不知道确切的情况,因此我无法建议根据滚动位置确定日期的最佳方法是什么。

    【讨论】:

    • 谢谢,我今天要试试这个。容器视图和表格视图必须都对彼此的更改做出反应。我可以使用委托模式来实现这一点吗?
    • 对于 tableView 的更改 - 您已经有了 ScrollView 的委托(该表实际上是 ScrollView 的子类)。对于随着天数从顶部视图进行的更改-您最好使用像集合这样的现成组件(如@user3820674 建议的那样)。并且由于视图控制器将负责它们,并且它们的委托都将由视图控制器接收,因此您可以对它们的更改做出反应。
    【解决方案2】:

    但这是正确的方法吗

    如果您的意思是“日期可以在导航栏中”,那么不是。这不是正确的方法。

    【讨论】:

    • 如果您希望在其他东西滑入和滑出的情况下停留几天,那么您必须自己编写代码。例如,您可能会使用自定义父视图控制器。内置的 UINavigationController 本身不会允许您这样做。
    【解决方案3】:

    如果我理解正确,您所需要的只是实现一个水平滚动的集合视图。每次点击集合视图单元格(didSelectItemAtIndexPath 方法)时,表格视图都会重新加载。 干杯。

    【讨论】:

    • 谢谢,点击时重新加载数据 - 这部分很清楚,但使用哪个视图 - 更不清楚。我现在就试试这个。
    • “但是使用哪个视图 - 更不清楚” - 我无法理解你。
    • 我的意思是你的答案是我想要的(可能)——因为我不知道什么是集合视图,现在我要调查
    • 好的。我建议您调查 Core Data 以保存您的每日清单。
    【解决方案4】:

    我只是设置了 scrollview.frame 以适应视图控制器顶部的按钮高度。如果您使用故事板,请确保您没有滚动视图顶部的按钮。

        let width = self.view.frame.size.width
        button1.frame = CGRectMake(0, 0, width / 4, 40)
        button2.frame = CGRectMake(width / 4, 0, width / 4, 40)
        button3.frame = CGRectMake((width / 4) * 2, 0, width / 4, 40)
        button4.frame = CGRectMake((width / 4) * 3, 0, width / 4, 40)
        button5.frame = CGRectMake(0, 41, width / 4, 40)
        button6.frame = CGRectMake(width / 4, 41, width / 4, 40)
        button7.frame = CGRectMake((width / 4) * 2, 41, width / 4, 40)
        button8.frame = CGRectMake((width / 4) * 3, 41, width / 4, 40)
    
        // scrollview frame size
        scrollView.frame = CGRectMake(0, 80, self.view.frame.width, self.view.frame.height)
        scrollView.contentSize.height = self.view.frame.height
        scrollViewHeight = scrollView.frame.size.height
    

    【讨论】:

      猜你喜欢
      • 2013-08-21
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多