我试图让用户按下顶部的其中一个名称。完成后,子 TableViewController 将更改一个 bool 值 currentUserIsLoggedInUser
。
在我的 FactsController
中我有代码:
class FactsController: UIViewController {
@IBOutlet weak var currentUserName: UIButton!
@IBOutlet weak var friendUserName: UIButton!
var currentPersonSelectedIsCurrentUser: Bool = false
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "ChangePersonSegue") {
let embed: FactsTableViewController = segue.destinationViewController as! FactsTableViewController
embed.currentPersonSelectedIsCurrentUser = self.currentPersonSelectedIsCurrentUser
embed.refresh //this doesn't call the function like id want it to
}
}
func changeFactList() {
//segue for table view controller for ___
// call prepareForSegue
performSegueWithIdentifier("ChangePersonSegue", sender: self)
}
override func viewDidLoad() {
//changethings(user)
}
@IBAction func tappedUserName (sender: UIButton) {
if currentPersonSelectedIsCurrentUser {
}
else {
currentPersonSelectedIsCurrentUser = true
changeFactList()
currentUserName.titleLabel?.textColor = UIColor.lightGrayColor()
friendUserName.titleLabel?.textColor = UIColor.darkGrayColor()
}
}
@IBAction func tappedFriendName (sender: UIButton) {
if currentPersonSelectedIsCurrentUser {
currentPersonSelectedIsCurrentUser = false
changeFactList()
// change text color
currentUserName.titleLabel?.textColor = UIColor.darkGrayColor()
friendUserName.titleLabel?.textColor = UIColor.lightGrayColor()
}
else {
}
}
}
然后在我的 FactsTableViewController
中我有代码:
class FactsTableViewController: UITableViewController {
let cellID = "factCell"
var currentUserIsLoggedInUser: Bool = false
//var currentUserName: String = ""
var facts = [Fact]()
var currentUser: User!
var soUser: User!
let ref: FIRDatabaseReference = FIRDatabase.database().reference()
override func viewDidLoad() {
if currentUserIsLoggedInUser {
// make tableview for the current user
}
else {
// make tableview for the friend
}
}
func refresh() {
self.tableView.reloadData()
}
}
如果有一种方法可以在按下按钮时从 FactsController
发送一个 bool 值,那将使一切变得容易得多。
最佳答案
如果你想:
a way to just send from the FactsController a boolean when a button is pressed
然后你需要一个代表。不过, Storyboard 并不能使您对这种情况有太多控制。我会将您的 UI 移动到 nib 文件中,并手动添加 FactsTableViewController
作为子 VC。拥有这些类的实例,您可以更轻松地管理委托(delegate)。
关于ios - 从父 ViewController 更改嵌入式 UITableViewController 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38150411/