gpt4 book ai didi

ios - 从 Swift 2 中的子元素执行 TabViewController 中的函数

转载 作者:行者123 更新时间:2023-11-30 13:21:48 24 4
gpt4 key购买 nike

我有一个选项卡 View Controller ,里面有一个 TableView Controller 。

当点击表格单元格时,我想执行一个以必须从选项卡 View 调用的 segue 结尾的函数。

但是,虽然我可以在“表格单元格”点击上执行该函数,但它不会调用父函数。

相关代码

SettingsTableViewController

protocol settingsTableViewControllerDelegate {
func settingsTableViewControllerDidPressButton(settingsTableViewController: SettingsTableViewController)
}

class SettingsTableViewController: UITableViewController {

var delegate:settingsTableViewControllerDelegate?

//...

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
let row = indexPath.row
if row == 0 {
let refreshAlert = UIAlertController(title: "Log Out", message: "Are you sure?", preferredStyle: UIAlertControllerStyle.Alert)
refreshAlert.addAction(UIAlertAction(title: "Log Out", style: .Default, handler: { (action: UIAlertAction!) in
print("Confirmed Log Out")
self.delegate?.settingsTableViewControllerDidPressButton(self) } ))
refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
print("Cancelled Log Out") } ))
presentViewController(refreshAlert, animated: true, completion: nil)
}
}

DashboardTabViewController

class dashboardTabBarController: UITabBarController, settingsTableViewControllerDelegate {

func settingsTableViewControllerDidPressButton(settingsTableViewController: SettingsTableViewController) {
print("Executing log out function")
let defaults = NSUserDefaults.standardUserDefaults()
defaults.removeObjectForKey("email")
defaults.removeObjectForKey("password")
defaults.removeObjectForKey("userid")
self.performSegueWithIdentifier("dashboardToHome", sender: nil)
}
}

“Confirmed Log Out”语句打印到控制台。但不是“执行注销功能”。

如何调用这个函数?

最佳答案

您应该使用闭包来实现此类功能。在选项卡 View Controller 中,您只需要通过执行以下操作来引用 TableView Controller :

// in tab view controller viewDidLoad
let tableViewController = self.viewControllers[indexOfTableViewController] as! YourTableViewController
tableViewController.segueClosure = {
performSegueWithIdentifier("segueId", sender: self)
}

然后在函数的末尾“以必须从选项卡 View 调用的转场结束。”,您只需调用该闭包:

// in YourTableViewController
segueClosure()

关于ios - 从 Swift 2 中的子元素执行 TabViewController 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com