То, что я пытаюсь сделать, - это нажать кнопку (которая была создана в коде) и заставить ее вызвать другой контроллер представления, а затем запустить функцию в новом контроллере представления.
Я знаю, что это может быть сделано относительно легко в IB, но это не вариант.
Примером того, что я хочу сделать, было бы, если бы у вас было два контроллера представления, один с заставкой дома. На другом контроллере вида прошел дом, чтобы вы могли пройти через все комнаты в установленном порядке. На заставке будут кнопки для каждой комнаты, которые позволят вам прыгнуть в любую точку прохода.
источник
И если кому-то интересно, как это сделать в
swift
:источник
nil
? Разве это не приложение ВСЕГДА имеет AppDelegate ?!sharedApplication()
следует заменить наshared
. т.е. удалите «Приложение» и скобки. Таким образом, полный рабочий код на Swift 5.2 будет:if let myDelegate = UIApplication.shared.delegate as? AppDelegate { myDelegate.someMethod() }
Похоже, вам просто нужно
UINavigationController
настройка?Вы можете получить в
AppDelegate
любом месте программы черезВ вашем делегате приложения вы должны иметь свой контроллер навигации, либо через IB, либо в коде.
В коде, если вы уже создали свой viewcontroller «Обзор дома», это будет что-то вроде этого в вашем
AppDelegate
didFinishLaunchingWithOptions
...После этого вам просто нужен viewcontroller для каждой комнаты и вызывать следующее, когда происходит событие нажатия кнопки ...
Я не проверял приведенный выше код, поэтому простите за любые синтаксические ошибки, но надеюсь, что псевдокод поможет ...
источник
Вот как я это делаю.
Не забудьте импортировать.
источник
Просто следуйте этим шагам
1. импортируйте ваш делегат приложения в ваш класс, где вы хотите объект делегата приложения.
2. Внутри вашего класса создайте экземпляр объекта вашего делегата приложения (это в основном одноэлементный).
3. Теперь вызвать метод с помощью селектора
или напрямую
для быстрого
Я буду рекомендовать первый. Беги и иди.
источник
Избегайте включения вашего AppDelegate.h везде. Это простое приведение, которое проходит долгий путь, позволяя разрабатывать независимый контроллер и использовать его в других местах, не беспокоясь об имени класса и так далее ...
наслаждаться
источник
Много хороших ответов уже добавлено. Хотя я хочу добавить что-то, что подходит мне большую часть времени.
и это все. Используйте его во всем приложении, как константу.
например
Не забудьте импортировать yourAppDelegate.h в соответствующий файл .pch или макрос.
источник
Если кому-то нужно то же самое в Xamarin (Xamarin.ios / Monotouch), это сработало для меня:
(Требуется использование UIKit;)
источник
И в случае, если вам нужен доступ к вашему делегату расширения WatchKit из контроллера представления на watchOS:
источник
Обновление для Swift 3.0 и выше
Вызов вышеуказанного метода из вашего контроллера следующим образом
Вывод:
источник
Вы можете добавить
#define uAppDelegate (AppDelegate *)[[UIApplication sharedApplication] delegate]
вPrefix.pch
файл вашего проекта, а затем вызвать любой из ваших методовAppDelegate
в любомUIViewController
с приведенным ниже кодом.источник
Даже если это технически осуществимо, это НЕ хороший подход. Когда вы говорите: «Заставка будет иметь кнопки для каждой комнаты, которые позволят вам прыгнуть в любую точку прохода». Итак, вы хотите пройти через appdelegate для вызова этих контроллеров через события tohc на кнопках?
Этот подход не следует указаниям Apple и имеет много недостатков.
источник
В 2020 году iOS13, xCode 11.3. Что работает для Objective-C:
#import "AppDelegate.h"
Это работает для меня, я надеюсь, что то же самое для вас! : D
источник