Arhn - архитектура программирования

Как программно подключиться к нескольким контроллерам представления с помощью кнопки

У меня есть контроллер представления с большим количеством (36) кнопок, и я хочу, чтобы каждая из этих кнопок переходила к определенному контроллеру представления на основе переменной, которая была установлена ​​ранее в программе. Другими словами, любая кнопка потенциально может перейти к 15 различным контроллерам представления на основе переменной, которая была отправлена ​​​​в контроллер представления, содержащий кнопки...

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

Я попытался сделать что-то вроде этого:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if variable == "Whatever" {

    let send = segue.destination as! AViewController
        send.variablesent = (sender as! UIButton).title(for: .normal)!}
}

Но это работает, только если я нажму и перетащу кнопку в раскадровке в «AViewController».

Любая помощь приветствуется, спасибо!!


  • Используйте каждую кнопку с тегом. и вы можете идентифицировать каждый с помощью sender.tag. 26.05.2017

Ответы:


1

Для этого вы можете сделать переход от SourceViewController к DestinationViewController вместо Button к Controller. После этого, когда вы вызываете perfromSegue в действии кнопки, передайте ссылку на кнопку как sender в вызове perfromSegue.

@IBAction func buttonAction(_ sender: UIButton) {
    self.performSegue(withIdentifier: "segueIdentifier", sender: sender)
}

Теперь в prepareForSegue укажите отправителя на UIButton и установите заголовок в соответствии с ним.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if variable == "Whatever" {
        let send = segue.destination as! AViewController
        if let button = sender as? UIButton {
            send.variablesent = button.titleLabel?.text ?? "Default value"
        }
    }
}
26.05.2017
  • Спасибо за ваш ответ! Я пытаюсь выяснить, каким должен быть segueIdentifier и как я могу получить доступ к нескольким контроллерам просмотра с одной и той же кнопки. У меня пока не щелкает. Любое направление? Спасибо! 28.05.2017
  • Я новичок во всем этом, и у меня недостаточно базовых знаний, чтобы понять ваш ответ. Теперь я заставил его работать и теперь понимаю ваш ответ. Это было полезное руководство для подключения того, что я не понял: stackoverflow.com/a/31086536/7729572 28.05.2017
  • Добро пожаловать дружище :) 28.05.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..