我正在創建一個tableView
菜單,最終導致用戶輸入某個參數,然後輸出結果。在UITableView中快速複製葉子的樹結構
菜單由多個頁面組成,根據用戶選擇的內容,它會給出不同的用戶輸入。這與iPhone設置非常相似。
現在,我的菜單模型的方法是使用一個樹狀結構:
class Node {
let value: Modules
var parentNode: Node?
var childenNode = [Node]()
var childCount: Int {
return childenNode.count
}
func appendNode(node: Node) {
childenNode.append(node)
node.parentNode = self
}
func isLeaveNode() -> Bool {
return childenNode.isEmpty
}
init(module: Modules) {
self.value = module
}
}
這是非常簡單和典型樹數據結構。我的問題是這樣的,可能有重複的節點,意味着父節點將被覆蓋。例如,給定的結構是這樣的:
[1]
/ \
[2] [3]
/ \
[4] [4]
如果我這棵樹與我的代碼模型,它看起來就像這樣:
let node1 = Node(.1)
let node2 = Node(.2)
let node3 = Node(.3)
let node4 = Node(.4)
node1.appendNode(node2)
node1.appendNode(node3)
node2.appendNode(node4)
node3.appendNode(node4)
由於節點4的外觀不獨特,因此node4
的父項將被覆蓋,並且父項現在爲node3
。而node2
和node3
應共享相同的葉子。我應該如何更改我的代碼,以便給定的葉節點可以有多個父節點?
附加信息:Modules
是enum
。這個問題可以通過創建更多的enum
成員來解決,但是解決問題還有其他方法嗎?
歡迎任何建議!
謝謝!
您是否使用模塊的枚舉? – ScottyBlades
是的,我是。這些模塊是枚舉 –
你問:「我應該如何更改我的代碼,以便我的葉節點可以有不同的父母?」但是具有相同父節點的唯一節點是node2和node3。你不想讓node2和node3共享父級?爲什麼不想要這個? – ScottyBlades