我目前正在开发一个项目,该项目要求我使用委托将变量(已经在委托中)传递到另一个视图控制器。
我有一个名为TableView
的{{1}},它实现了一个名为MyCell的自定义类来布局单个单元格
MyTableView
前面提到的class MyTableViewController: UITableViewController {
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 4 {
let answerViewController = AnswerViewController()
navigationController?.pushViewController(answerViewController, animated: true)
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
var items = ["Item 1","Item 2","Item 3","Item 4"]
let cell1: MyCell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! MyCell
return cell1
}
}
类有一个包含委托的扩展名。在这个委托中有一个名为MyCell
的变量,我想将其传递给名为tagToIndex
的视图控制器
AnswerViewController
设置视图的方式取决于extension MyCell: YSSegmentedControlDelegate{
func segmentedControl(_ segmentedControl: YSSegmentedControl, willPressItemAt index: Int) {
//Modifying Variable Tag To Index
tagToIndex[actionButton.tag] = index
//Passing Variable to Delegate
delegate?.finishPassing(dictionary: tagToIndex)
}
}
值,因此我想在委托中实现tagToIndex
函数。我将在委托函数中使用一系列if-else语句,以便在满足viewDidLoad
条件后以某种方式设置视图(if-else语句未显示)。
tagToIndex
我还创建了协议class AnswerViewController: UIViewController, TagToIndexDelegate {
// Accessing the variable tagToIndex passed through the delegate
func finishPassing(dictionary: Dictionary<Int, Int>) {
func viewDidLoad() {
super.viewDidLoad()
view?.backgroundColor = UIColor(white: 240.0/255.0, alpha: 1)
}
}
,但我认为没有必要在此处发帖。我有两个问题:
tagToIndexDelegate
)foo.delegate = self
吗?如果是这样,这是正确的做法吗?答案 0 :(得分:0)
我在哪里设置目的地代表(即我在哪里放置
foo.delegate = self
)
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
var items = ["Item 1","Item 2","Item 3","Item 4"]
let cell1: MyCell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! MyCell
//set the destination's delegate
cell1.delegate = self
return cell1
}
}
我可以在像这样的委托中实际实现
viewDidLoad()
吗?如果是这样,这是正确的做法吗?
很抱歉,您无法在委托中实施viewDidLoad()
因为它永远不会执行。
viewDidLoad
或viewWillAppear
,它们将在用户看到视图之前执行
这是正确的方法
class AnswerViewController: UIViewController, TagToIndexDelegate {
// Accessing the variable tagToIndex passed through the delegate
func finishPassing(dictionary: Dictionary<Int, Int>) {
//background view automatic change don't worry about that
view?.backgroundColor = UIColor(white: 240.0/255.0, alpha: 1)
}