2017-01-04 15 views
-3

У меня есть UIView, где я буду писать действия для кнопок. В XIB-файле у меня есть панель, расположенная над клавиатурой с этими кнопками. Как подключить эти кнопки к ViewController с UITextView и при нажатии кнопки действие должно выполняться в UITextView (например: когда я нажимаю кнопку «Полужирный», выбранный текст в UITextView должен быть полужирным) enter image description here [! [Введите описание изображения здесь] [2]] [2]Подключить UIView с XIB к другому ViewController

import UIKit 

protocol NoteViewDelegate { 

    func didUpdateNoteWithTitle(newTitle : String, andBody newBody : String) 
} 

class NewNoteViewController: UIViewController , UITextViewDelegate { 

    var delegate : NoteViewDelegate? 


    @IBOutlet weak var textBody: UITextView! 

    var strBodyText : String! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.textBody.text = self.strBodyText 

     self.textBody.becomeFirstResponder() 

     self.textBody.delegate = self 

     NotificationCenter.default.addObserver(self, selector: #selector(NewNoteViewController.updateTextView(notification:)) , name: Notification.Name.UIKeyboardWillChangeFrame, object: nil) 
     NotificationCenter.default.addObserver(self, selector: #selector(NewNoteViewController.updateTextView(notification:)) , name: Notification.Name.UIKeyboardWillHide, object: nil) 

     textBody.inputAccessoryView = Bundle.main.loadNibNamed("CustomAccessoryView", owner: self, options: nil)?.first as? UIView 
} 

    func updateTextView (notification:Notification) { 
     let userInfo = notification.userInfo! 

     let keyboardEndFrameScreenCoordinates = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue 
     let keyboardEndFrame = self.view.convert(keyboardEndFrameScreenCoordinates, to: view.window) 

     if notification.name == Notification.Name.UIKeyboardWillHide { 
      textBody.contentInset = UIEdgeInsets.zero 

     }else{ 
      textBody.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardEndFrame.height, right: 0) 

      textBody.scrollIndicatorInsets = textBody.contentInset 
    } 
     textBody.scrollRangeToVisible(textBody.selectedRange) 
} 

ответ

0

Как подключить эти кнопки для ViewController, который имеет UITextView

контроллер вид имеет ссылку на строке в файле .xib в то время, когда бар загружается. Поэтому он имеет ссылки на кнопки. Поэтому он может позвонить addTarget(_:action:for:), чтобы настроить действия кнопки, чтобы вызвать метод контроллера вида, который, в свою очередь, может перевести текст в текстовое представление.

+0

Я не знаю, где можно назвать «addTarget (_: action: for :)». Я сделал этот бар с кнопками в файле .xib. –

+0

. Вы не указали свой код для того, как вы загружаете _.xib_, о котором вы говорили, поэтому я не могу рассказать вам о том, что я сказал: в то время, когда вы его загружаете, у вас есть вам нужна ссылка. Вы показали совершенно бессмысленный снимок экрана. Код - это то, что важно. – matt

+0

Hahaha да, я знаю, я хотел показать кнопки, и вот код –