swift - 将第二个视图控制器添加到单个窗口应用程序
问题描述
我有一个包含多个 NSTableView 项目的单个窗口应用程序。本来我一直让tableView数据源方法一样,只是根据tableView传递过来的切换。有人建议我——我同意——最好为 tableViews 分离视图控制器(如果不是现在,最终随着事情变得更加复杂)。
我想我需要创建第二个 ViewController 类文件,并简单地将 NSTableViews 连接到将处理 tableView 数据的新 ViewController 类,但我看不到如何在情节提要中建立连接。
什么是正确的方法?我将不胜感激任何提示或建议。(我搜索了教程来帮助解释如何最好地做到这一点,但找不到与我正在尝试做的事情相关的任何内容。)
// MARK: - TableView 的东西
func numberOfRows(in tableView: NSTableView) -> Int {
var numberOfRows : Int = 0
if tableView == mainTableView2 {
print("number of rows for mainTableView2")
numberOfRows = allFilesAsPaths.count
} else if tableView == fileTypeTableView {
print("number of rows for fileTypeTableView")
numberOfRows = fileTypesDict.count
} else if tableView == exifTableView {
numberOfRows = exifData.count
print("exifData.count = \(exifData.count)")
print("number of rows for exifTableview \(numberOfRows)")
}
return numberOfRows
}
func tableView(_ tableView: NSTableView, objectValueFor tableColumn: NSTableColumn?, row: Int) -> Any? {
var val : String = ""
if tableView == mainTableView2 {
val = allFilesAsPaths[row]
}
if tableView == exifTableView {
if tableColumn?.identifier.rawValue == "tag" {
let tagArray : [String] = Array(exifData.keys)
val = tagArray[row]
} else if tableColumn?.identifier.rawValue == "value" {
let valueArray : [String] = Array(exifData.values)
val = valueArray[row]
}
}
if tableView == fileTypeTableView {
let types : [String] = Array(fileTypesDict.keys)
let counts : [Int] = Array(fileTypesDict.values)
if tableColumn?.identifier.rawValue == "type" {
val = types[row]
} else {
val = String(counts[row])
}
}
return val
}
解决方案
推荐阅读
- excel - 如何查看哪些 A 列条目未出现在 B 列中?
- java - 是否可以在运行时以编程方式编辑 Wildfly 服务器的standalon.xml 文件以更改数据库设置?
- mongodb - Mongo批量插入重复_id
- html - 如何更改此代码以解决此 Andela Homestudy Assessment 挑战?
- composer-php - 根据安装的 PHP 版本需要包的版本吗?
- android - 在Android平台运行c/c++可执行文件
- javascript - 径向树状图上未显示数据
- android - 将数据传递给 Intent / BroadcastReceiver
- vba - Powerpoint 编辑仅限于评论
- android - WebSocket 可以在 PC 上运行,但不能在 Android 上运行?