私は現在、デリゲートを使用して別のビューコントローラに(既にデリゲート内にある)変数を渡す必要があるプロジェクトに取り組んでいます。ネストされたデリゲート/デリゲート内のviewDidLoad()の実装
私は前述のMyCell
クラスは、デリゲートが含まれている拡張子を持つ個々のセル
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というカスタムクラスを実装MyTableView
と呼ばれるTableView
を持っています。このデリゲートの中で、私は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
という変数があるビューがセットアップである方法がtagToIndex
値に依存し、私は内viewDidLoad
機能を実装したいですデリゲート。私はtagToIndex
条件が満たされたら(if-elseステートメントが表示されていない)ビューを特定の方法で設定するために、デリゲート関数で一連のif-elseステートメントを使用します。
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
を置かない、すなわち場所)
viewDidLoad()
を実装することができます
- 私は先のデリゲートを設定します:私は2つの質問がありますか?もしそうなら、この適切な練習ですか?私は先のデリゲートを設定するのです
適切な方法を確認するために取得する前に、彼らが実行されます。これは何が恩恵を受けていますか? 。 'viewDidLoad'関数なしで' finishPassing'を実装するときに違いはありますか? –
達成しようとしているもの。あなたが使っている複雑な方法ではなく、簡単な方法をあなたに提案することができます。 – luckyShubhra
'tagToIndex'は、一連のセグメント化されたコントロールを追跡します。 'answerViewController'は、これらのセグメント化されたコントロールのステータス(したがって' tagToIndex')によって異なって見えます。これは本質的には質問/回答アプリなので、UILabelを持つ 'tableView'コントローラと、行ごとに1つの「yes」または「no」セグメント化されたコントロールがあります。ユーザーがセグメント化されたコントロールを特定の順序で選択すると、アプリケーションは「answerViewController」に進みます。レイアウトはどの質問に「はい」または「いいえ」と答えたかによって異なります – indiankid97