delegationを使用できます。
まず、デリゲートプロトコルを宣言します。これはあなたのNoteDetailViewController.swift
ファイルにする必要がありますが、class
宣言の外:
protocol NoteDetailViewControllerDelegate: class {
func noteDetailViewControllerButtonTouched(controller: NoteDetailViewController)
}
は
次に、あなたのNoteDetailViewController
にデリゲートのプロパティを追加します。今すぐ
weak var delegate: NoteDetailViewControllerDelegate?
は、我々は、デリゲートを、伝えるために@IBAction
を使用しています(assum ListTableViewController
に戻って、最後に
@IBAction func funcButTouched(sender: UIButton)
{
delegate?.noteDetailViewControllerButtonTouched(self)
}
:ListTableViewController
になりますこのコントローラをINGのは、プロトコルに準拠し、それ自体にデリゲートを設定するprepareForSegue
を使用して、)NoteDetailViewController
が示されている直接前にいずれかになります。
class ListTableViewController: UITableViewController, NoteDetailViewControllerDelegate {
// ... more stuff ...
// Implement the delegate protocol
func noteDetailViewControllerButtonTouched(controller: NoteDetailViewController) {
// Do something! The button was pressed!
wordCount()
}
// Set ourselves as delegate when we are about to show the other view controller
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let yourVC = segue.destinationViewController as? NoteDetailViewController {
yourVC.delegate = self
}
}
}
あなたはこのような何かを終える必要があります。
NoteDetailViewController.swift
:
class NoteDetailViewController: UIViewController
{
@IBOutlet weak var funcButton: UIButton!
weak var delegate: NoteDetailViewControllerDelegate?
@IBAction func funcButTouched(sender: UIButton)
{
delegate?.noteDetailViewControllerButtonTouched(self)
}
}
protocol NoteDetailViewControllerDelegate: class {
func noteDetailViewControllerButtonTouched(controller: NoteDetailViewController)
}
ListTableViewController.swift
:
class ListTableViewController: UITableViewController, NoteDetailViewControllerDelegate
{
// the function
func wordCount()
{
var contentArr = Project.sharedInstance.content.componentsSeparatedByString(" ")
for (index, element) in contentArr.enumerate()
{
let location = conciseArr.indexOf(element)
if (location != nil)
{
contentArr[index] = inflatedArr[location!]
afterStr = contentArr.joinWithSeparator(" ")
Project.sharedInstance.after = afterStr
}
}
}
// Implement the delegate protocol
func noteDetailViewControllerButtonTouched(controller: NoteDetailViewController) {
// Do something! The button was pressed!
wordCount()
}
// Set ourselves as delegate when we are about to show the other view controller
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let yourVC = segue.destinationViewController as? NoteDetailViewController {
yourVC.delegate = self
}
}
}
:
NoteDetailViewController.swift:
がListTableViewController.swiftを聞いている? –
あなたのUIViewController階層を教えてもらえますか? –
ビューコントローラの順番は? ListTableViewControllerをNoteDetailViewControllerにします。 –