2016-04-08 7 views
-1

У меня есть класс в моем проекте, в котором есть текстовое поле, в котором пользователи могут вводить текст. Однако я хотел бы, чтобы текст, введенный в это текстовое поле, был получен другим классом. До сих пор я использовал это:Как ссылаться на переменную в другом классе

var userEntry = userTextField.text 

К сожалению, метод выше, только, кажется, работает только для переменных, которые находятся в том же классе.

+0

В * точно * так, как вы там делали. 'text' - это переменная другого класса (возможно,' UITextField'), и вы получаете доступ к ней, пройдя ссылку, которую вы имеете к экземпляру этого класса ('userTextField'). – nhgrif

ответ

0

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

Использование протоколов является стандартом де-факто в большинстве API Apple, и вы можете найти множество учебных пособий по этому вопросу, если вы это сделаете.

Центр уведомлений также является популярной альтернативой, и, честно говоря, немного легче получить голову, если вы только начинаете.

Здесь приведен пример супер простого уведомления, чтобы вы начали, снова google предмет, чтобы получить учебник.

var dataDict = Dictionary<String, String>() 
       dataDict["rid"] = self.superString4 
        NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: self, userInfo:dataDict) 

Этот код делает звонок в центр уведомлений, размещая информацию в dataDict в процессе. Вы помещаете это в свой класс с данными, классом, отправляющим данные.

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.methodOfReceivedNotification(_:)), name:"NotificationIdentifier", object: nil) 

И этот код регистрирует уведомление в принимающем классе.

func methodOfReceivedNotification(notification: NSNotification){ 
    print("methodOfReceivedNotification") 
    var recordID: CKRecordID! 
    if let info = notification.userInfo as? Dictionary<String,String> { 
     if let rid = info["rid"] { 
      print("rid \(rid)") 
     } 
} 

И этот код снова в принимающем классе что-то делает, когда он получает уведомление.

Смежные вопросы