如何更改单独 ViewController 中的 textView 与另一个 ViewController 中的按钮?
How to change textView in separate ViewController from button in another ViewController?
我有一个 Collections 视图,其中包含各种单元格,这些单元格也是按钮。单击其中一个按钮后,会显示一个单独的 ViewController(我只是将按钮连接到 ViewController 并单击 "show")。我想知道如何为我的 Collections 视图中的每个不同按钮切换单独 ViewController 中的 textView。
这是我的 CollectionsView 中的代码:
class Example : UICollectionViewController {
var Array = [String]()
var ButtonArray = [String]()
@IBOutlet var menu: UIBarButtonItem!
override func viewDidLoad() {
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
Array = ["A", "B", "C, "D]
ButtonArray = ["", "", "", ""]
menu.target = self.revealViewController()
menu.action = Selector("revealToggle:")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return Array.count
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var Label = cell.viewWithTag(1) as! UILabel
Label.text = Array[indexPath.row]
var Button = cell.viewWithTag(2) as! UIButton
Button.setTitle(ButtonArray[indexPath.row], forState: UIControlState.Normal)
return cell
}
}
以及单独 ViewController 中的代码:
class Example2: UIViewController {
@IBOutlet var exText: UITextView!
override func viewDidLoad() {
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
按照这些步骤...
1:创建一个名为 Manager.swift 的单独文件并将此代码放入其中...
//manager.swift
import Foundation
struct Manager {
static var messageText = [String]()
}
2:按 Shift+Command+K 清理项目。
3: 在第一个视图控制器中将 messageText 设置为文本字段文本...
Manager.messageText.append(self.textField.text)
4:在第二个视图控制器中检索文本并将标签设置为消息文本...
self.label.text = Manager.messageText[0]
5:你完成了!!
这是一种方法,它依赖于创建一个可以在任何可用范围之外定义的全局变量 class,这里不需要新文件。只需在 class 代码上方(或下方)定义变量。
另一个好方法是使用自动保存在应用程序设置文件中的 UserDefaults,这样变量会被保留,当您再次重新启动应用程序时,该值将与您离开时的值相同。
Swift3+
To store/change a value:
UserDefaults.standard.setValue(yourValue, forKey: "yourKey")
To retrieve a value
UserDefaults.standard.value(forKey: "yourKey")
我有一个 Collections 视图,其中包含各种单元格,这些单元格也是按钮。单击其中一个按钮后,会显示一个单独的 ViewController(我只是将按钮连接到 ViewController 并单击 "show")。我想知道如何为我的 Collections 视图中的每个不同按钮切换单独 ViewController 中的 textView。
这是我的 CollectionsView 中的代码:
class Example : UICollectionViewController {
var Array = [String]()
var ButtonArray = [String]()
@IBOutlet var menu: UIBarButtonItem!
override func viewDidLoad() {
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
Array = ["A", "B", "C, "D]
ButtonArray = ["", "", "", ""]
menu.target = self.revealViewController()
menu.action = Selector("revealToggle:")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return Array.count
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var Label = cell.viewWithTag(1) as! UILabel
Label.text = Array[indexPath.row]
var Button = cell.viewWithTag(2) as! UIButton
Button.setTitle(ButtonArray[indexPath.row], forState: UIControlState.Normal)
return cell
}
}
以及单独 ViewController 中的代码:
class Example2: UIViewController {
@IBOutlet var exText: UITextView!
override func viewDidLoad() {
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
按照这些步骤...
1:创建一个名为 Manager.swift 的单独文件并将此代码放入其中...
//manager.swift
import Foundation
struct Manager {
static var messageText = [String]()
}
2:按 Shift+Command+K 清理项目。
3: 在第一个视图控制器中将 messageText 设置为文本字段文本...
Manager.messageText.append(self.textField.text)
4:在第二个视图控制器中检索文本并将标签设置为消息文本...
self.label.text = Manager.messageText[0]
5:你完成了!!
这是一种方法,它依赖于创建一个可以在任何可用范围之外定义的全局变量 class,这里不需要新文件。只需在 class 代码上方(或下方)定义变量。 另一个好方法是使用自动保存在应用程序设置文件中的 UserDefaults,这样变量会被保留,当您再次重新启动应用程序时,该值将与您离开时的值相同。 Swift3+
To store/change a value:
UserDefaults.standard.setValue(yourValue, forKey: "yourKey")
To retrieve a value
UserDefaults.standard.value(forKey: "yourKey")