我想創建一個動態菜單,我發送文本和按鈕從一個控制器到下一個控制器的動作,然後我想生成按鈕運行該操作,但是我遇到了語法問題。如何調用一個func傳遞它作爲控制器之間的參數
,以便在第一控制器的示例我有:
let vc = storyboard.instantiateViewController(withIdentifier:
"CompetitiveKPIChart") as! CompetitiveKPIChartViewController
vc.Menu = [["Menu1":ClickBack()],["Menu2":ClickBack()],["Menu3":ClickBack()]]
func ClickBack() {
self.dismiss(animated: true, completion: {});
}
和在第二控制器:
var Menu : [Dictionary<String,()>] = []
override func viewDidLoad() {
let gesture2 = UITapGestureRecognizer(target: self,action: Menu["Menu1"])
btnBack.addGestureRecognizer(gesture2)
}
如何可以調用從第一控制器的點擊返回()在第二控制器GestureRecognizer?
難道你不能只是將第二個VC引用傳遞給第一個引用,然後在第一個引用上調用該方法? – NRitH
這是行不通的,因爲第一種方法可能存在於情況1中,但不是情況2中。我的想法是將第二種視圖重用於不同的上下文。這意味着在情況1我們有行動1行動,但在情形2我們有不同名稱的行動2行動。 –
你的代碼有幾個問題。 1)void函數應該是'() - >()',而不是'()'。 2)你的'Menu'是一個單元素字典的數組,但你指的就像是一本字典 - 我想你的意思是'menu:Dictionary()>'3)第二個參數('action:')給你的手勢識別器初始化器需要是一個'Selector',它是一個'@ objc'方法,而不是Swift函數。我想我會放棄這一點,並建議你嘗試另一種方法! –
Grimxn