Как мне изменить переход на основе UISwitch? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь создать вкладку настроек, которая изменяет вид, который видит пользователь на другой вкладке на основе переключателя UIS. Как бы я сделал так, чтобы при включении переключателя пользователь переходил на эту вкладку, он переходил к ViewController1, а когда переключатель был выключен и они переключали вкладки, он переходил к ViewController2? Я приложил скриншот, который мог бы объяснить это немного лучше. Я подверг цензуре информацию, которая выдала бы цель моего приложения, чтобы не привлекать подражателей и еще много чего.

ViewControllers in and the segue between them

Как видите, моя главная проблема с Представление модального полноэкранного режима состоит в том, что TabBarController исключен, и у пользователей нет возможности отключить настройку или просмотреть другую вкладку. Я не хочу представлять его как вкладку popover или pu sh, потому что я хочу, чтобы он чувствовал себя так, как будто ничего не произошло.

Увеличенный вид будет отображаться модально, когда переключатель включен и viewWillAppear вызывается ViewController1. Вот мой код для этого:

SettingsView.swift

import UIKit

class SettingsTableViewController: UITableViewController {
    @IBOutlet weak var viewSwitch: UISwitch!

    override func viewDidLoad() {
        tableView.allowsSelection = false
        super.viewDidLoad()
    }
    @IBAction func switchIsChanged(_ sender: Any) {
        if viewSwitch.isOn == true{
            TableViewController.switchState = true
        }
        if viewSwitch.isOn == false{
            TableViewController.switchState = false
        }
    }
}

Я переместил код из TabBar.swift в TableView.swift, потому что решение, которое я пробовал, на самом деле не относится к TabBarController. Вот TableView.swift:

import UIKit

class TableViewController: UITableViewController {
    public static var switchState: Bool?

    override func viewWillAppear(_ animated: Bool) {
        if TableViewController.switchState == true {
            performSegue(withIdentifier: "LargeViewSegue", sender: self)
        }
        else {
            print("Showing standard view.")
        }
    }
}

Этот код работает, но, как я уже говорил, он не показывает TabBar, что важно для моего приложения. Идеальное решение - изменить последовательность отношений с TabBarController на LargeView / TableView. К сожалению, из того, что я слышал, Вы не можете создавать пользовательские сегменты отношений программно. Если бы кто-то мог доказать, что я неправ, это было бы здорово.

Заранее спасибо.

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