Вызов переменной файла контроллера быстрого просмотра в Objective-C - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть проект, который представляет собой пересечение Swift и Objective-C с использованием bridging-header.

В моем основном файле ViewController.swift, вне объявления класса, у меня есть этот код:

var mainView = ViewController()

В других представлениях, к которым я обращаюсь, я могу использовать это для вызова функции для запуска на главном ViewController с помощью mainView.runFunction()

Как я могу вызвать эту функцию в Objective-C .m файл реализации?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 31 декабря 2018

Прежде всего для использования swift в target-c вам необходимо импортировать TargetName-Swift.h.Обратите внимание, что это целевое имя.

Для получения дополнительной информации посмотрите this .

. Вы можете достичь того, что хотите, таким образом:

ViewController *mainView = [[UIViewController alloc] init];
[mainView runFunction];

Также вы должны объявить свой runFunction с @objc, чтобы использовать его в target-c, как показано ниже:

@objc func runFunction {
    // what you want to do ...
}
0 голосов
/ 31 декабря 2018

В вашем файле Objective, то есть в файле .m, добавьте оператор импорта:

import "<ProjectName>-Swift.h"

Например, ваш проект называется MyProject, поэтому оператор импорта будет выглядеть так:

import "MyProject-Swift.h"

Ивызовите вашу функцию как: [mainView runFunction];

Я надеюсь, что это поможет.Вы также можете сослаться на один из моих ответов: Как я могу импортировать код Swift в Objective-C?

0 голосов
/ 31 декабря 2018

Следуйте этой яблочной статье и сделайте: Загрузите Swift в Objective-C .Или я уже сделал «трюк» с помощью клавиши «@objc», посмотрите на это маленькое объяснение: Что такое атрибут @objc , один простой способ - просто создать вспомогательную функцию, которая будет видна вашей цели-c класс и сделано так:

@objc func retrieveMainView() -> UIViewController { return MyViewController() }

И вы вызываете это из своего класса Objective-C, может быть, вам нужно аннотировать ваш swift-класс с помощью @objc, посмотрите на эти две ссылки, и вы получите идеюи выяснить наверняка.

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