可以在分段控制器中维护两个tableviews和一个viewcontroller吗?

时间:2016-01-21 10:56:19

标签: ios objective-c uitableview uiviewcontroller uisegmentedcontrol

我怀疑如何在分段控制器中维护两个tableviews和一个视图控制器。在segment=0我希望显示第一个tableview,在segment=1显示第二个tableview,segment=2显示一个视图控制器,是否可以?

4 个答案:

答案 0 :(得分:1)

是。有可能的。有两种方式。

  1. 使用单个tableview。并根据细分,更改tableview值。
  2. 使用两个自定义tableview类和自定义Protocal / delegate方法来管理事件。

答案 1 :(得分:0)

你真的不需要2 Tableview。根据细分选择调用[tableview reloaddata],将您的数据显示在该细分受众群部分上。这节省了很多努力和操作。

答案 2 :(得分:0)

我认为scrollView可以帮助您解决问题:

只需在scrollView上添加两个tableViews并使用segmentedController方法设置scrollView的contentOffset.x

同样,您可以在scrollView上添加ViewController,然后单击两个tableView并通过单击segment == 2

滚动到它

希望我的建议可以帮助你:)

答案 3 :(得分:0)

无论您使用的是一个还是多个表格视图,其主要思想都是处理选择事件。

如果在情节提要中创建了分段控件,则可以使用@IBAction出口,也可以使用'addTarget'语法。

例如:

 mySegmentedControl.addTarget(self, #selector(myHandlerMethod(_:), for: .valueChanged)

其中处理程序方法类似于:

(第一种情况)

@IBAction func myHandlerMethod(_ sender: UISegmentedControl) {

}

(第二种情况)

@objc func myHandlerMethod(_ sender: UISegmentedControl) {
    if sender.selectedSegmentIndex == 1 {
        // handle your table view reloading or switching between first and second table views. 
    } else {
        // otherwise, do something else
    }
}

一些其他想法:

  • 在使用单个表视图并为其提供不同的数据集时,我会与其他人一致。如果数据集之间的内容格式在结构和含义上不同,则可以使用UITableViewCell的不同子类来表示数据。

  • 也许值得考虑使用子视图控制器而不是普通视图/表视图。这样,您可以封装与要呈现在视图控制器中的每个特定场景有关的逻辑,并独立地对其进行管理。