Двухуровневое меню настроек с возможностью многократного просмотра таблицы для iOS - PullRequest
0 голосов
/ 02 ноября 2018

Я очень новичок в разработке приложений для iOS и мне нужна помощь. Я пытаюсь реализовать вид экрана настроек, где некоторые элементы будут отображать дополнительные параметры на следующем экране. Попытка вложенных двухуровневых настроек пока что

Я пытаюсь использовать UITableView, но не смог использовать то же самое для отображения следующего уровня параметров. Я пытаюсь избежать переписывания того же фрагмента кода здесь.

У кого-нибудь есть предложения по этому поводу? Спасибо.

Вот код:

class SettingsMenuViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var tableView: UITableView!

    var Options = ["Settings1", "Settings2", "Settings3" ]


    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.delegate = self
        tableView.dataSource = self
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return Options.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        cell.textLabel!.text = Options[indexPath.row]
        cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator
        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let cell = tableView.cellForRow(at: indexPath)
        switch cell?.textLabel?.text {
        case "Settings1"?:
        //On selecting this option, need to load new set of setting options which are relevant to Settings1 but want to reuse the tableView available here

        case "Settings2"?:


        case "Settings3"?:


        case "Settings4"?:



        default:

        }
    }
}

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

если вы хотите повторно использовать код, то вам нужно нажать объект SettingsMenuViewController (новый объект не сам) со значениями параметров в таблице didSelectRowAt, например:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.cellForRow(at: indexPath)
    switch cell?.textLabel?.text {
    case "Settings1"?:
       let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SettingsMenuViewController") as! SettingsMenuViewController
       vc.Options = ["Settings5","Settings6"]
       self.navigationController?.pushViewController(vc, animated: true)

    case "Settings2”?:


    case "Settings3”?:


    case "Settings4”?:



    default:

    }
}
0 голосов
/ 02 ноября 2018

Похоже, вы пытаетесь использовать один и тот же tableView для отображения обоих уровней страницы настроек.

Изменение источника данных всегда обновляет содержимое ячейки. Следовательно, вы можете использовать это для имитации изменений в таблице в следующем месте:

optional func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

Просто измените источник данных на соответствующий в вышеуказанном методе делегата. (Убедитесь, что новые объекты источника данных совместимы с тем, как вы к ним обращаетесь в func tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...