我想显示一个具有分段控件的用户界面,以及分段控件的每个部分的不同表视图;所以,可以在两者之间切换的2个表视图(好友和串)。 为实现这一点,我做了以下
我想到的一些选项:
** ViewController代码**
t = 0:20
y1 = nan(size(t));
for ii = 1:length(t)
y1(ii) = 2*t(ii)*x + 2*b1 + b2;
end
**表格视图**
@objc(BuddiesBunchesViewController) class BuddiesBunchesViewController: UIViewController {
@IBOutlet weak var segmentedControl: UISegmentedControl!
@IBOutlet weak var tableView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// Instantiate tableView here to BuddiesTableView
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func segmentedControlIndexChanged(sender: AnyObject) {
switch segmentedControl.selectedSegmentIndex {
case 0: // Buddies
// Set tableview to the buddies table view
case 1: // Bunches
// Set tableview to the buddies table view
default:
break;
}
}
}
答案 0 :(得分:0)
我的解决方案如下。
您有一个具有两个段的段控件,因此您可以只有一个UITableView
对象而不是具有两个表视图,并根据段控件selectedSegmentIndex
更改数据源,然后重新加载表视图。在故事板中,将表格视图放在UIVIewController
的顶部,并为此创建@IBOutlet
。
答案 1 :(得分:0)
我个人不会创建两个表视图并将它们交换出来。两者之间唯一重要的区别是它们是不同的实例,您可以在数据源代码中测试它。他们会指向不同的数据源吗?为什么不直接更改数据源而不是表视图?
创建一个表视图。创建两个(或更多)类作为数据源(可能还有委托)。如果存在任何共同的行为,它们可以基于共同的超类。
当分段控制值发生变化时,只需将表视图的dataSource属性更改为指向具有该状态代码的类。如果更改数据源并未自动重新加载,您可能还需要使用-reloadData调用来执行此操作。
@IBOutlet private weak var tableView: UITableView!
let moviesDataSource = MyMoviesDataSource()
let tvShowsDataSource = MyTVShowsDataSource()
@IBAction func segmentedControlTouched(sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0:
self.tableView.dataSource = self.moviesDataSource
self.tableView.delegate = self.moviesDataSource
case 1:
self.tableView.dataSource = self.tvShowsDataSource
self.tableView.delegate = self.tvShowsDataSource
}
self.tableView.reloadData()
}