Доступ к IBOutlet из другого класса

Я ViewController функцию класса из моего класса ViewController следующим образом:

 Buttons.set_cornerRadius(10) 

У меня есть другой файл .swift где у меня есть объявленная функция:

 class Buttons { class func set_cornerRadius(radius: CGFloat) { ViewController().someButton.layer.cornerRadius = radius } } 

Когда я пытаюсь запустить это, он выдает ошибку: "Unexpectedly found nil while unwrapping an optional Value" .

Я уже проверил соединения Storyboard-IBOutlet . Все подключено правильно.
Если я вызову метод в том же классе, как это, все будет работать:

 class ViewController: UIViewController { @IBOutlet weak var someButton: UIButton! override func viewDidLoad() { super.viewDidLoad() set_cornerRadius(10) } func set_cornerRadius(radius: CGFloat) { someButton.layer.cornerRadius = radius } } 

Как я могу это исправить? Что я делаю неправильно / не понимаю?

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

2 Solutions collect form web for “Доступ к IBOutlet из другого класса”

Вы ViewController к универсальному ViewController , но вам нужно использовать существующий UIView . Сделайте что-то вроде этого:

 class Test: UIViewController { class func set_cornerRadius(yourView: UIView, radius: CGFloat) { yourView.layer.cornerRadius = radius } } 

Таким образом, вы передаете UIView который хотите установить радиус угла.

Вы расширяете свой класс ViewController следующим образом:

 extension ViewController { func set_cornerRadius(radius: CGFloat) { someButton.layer.cornerRadius = radius } } 

Теперь вы можете вызвать этот метод в исходном файле ViewController используя: set_cornerRadius(someValue) в вашем viewDidLoad или где хотите. Вы можете поместить это расширение в другой файл.

  • Индекс массива вне диапазона в cellForRowAtIndexPath
  • Как сделать переключатель с быстрым?
  • Трансформация глубины страницы на iOS
  • OpenURL для Facebook и Twitter в приложении делегата?
  • В чем разница между использованием CGSizeMake и CGSize? Лучше другого?
  • Как у вас есть два генератора случайных слов на одном экране
  • Почему Xcode перестает давать текстовое предсказание?
  • Быстро, как скрыть элемент и его пространство
  • Как я получу цифры с плавающей запятой половинной точности из текстуры металла с Swift?
  • UIAlertView отображает предупреждение, показывающее опоздание, чем когда требуется ios
  • Представьте ViewController перед вкладкой UITabBarController tabBar и скройте эту вкладкуBar
  • Interesting Posts

    Как я могу отправить приложение iOS клиенту, чтобы они могли вводить код

    Как создать UIActionSheet или UIAlertController (UIAlertControllerStyleActionSheet), например, Apple Music?

    iOS аудио через HDMI – как справиться с частотой дискретизации 48 кГц?

    Вложение GLKView в UIViewController

    Значение типа 'String' не имеет члена 'stringByTrimmingCharactersInSet'

    Не удалось установить рамку метки в tableView: cellForRowAtIndexPath: метод

    Как получить приложение для распространения при использовании xcodebuild -exportArchive (Xcode8.3, Auto Signing)?

    Остановить UIPopover от автоматического отклонения

    TableView с двумя экземплярами NSFetchedResultsController

    Xamarin: Ошибка MT2002: не удалось разрешить «System.Void System.Security.Cryptography.SHA1Cng ::. Ctor ()»

    Как перебирать массив объектов в swift

    Файл OpenTok / OpenTok.h не найден

    Не удалось получить remoteControlReceivedWithEvent – объектный c – ios

    CS193P Назначение 3, подсказка № 5 – Какова модель?

    xcode 5 как удалить цель

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.