gpt4 book ai didi

ios - 从保存按钮关闭 View Controller

转载 作者:行者123 更新时间:2023-11-28 08:33:55 24 4
gpt4 key购买 nike

我在展开/关闭 View Controller 时遇到问题。

我在这个 View Controller 中的导航栏有两个按钮。左边的是一个“Unwind/exit”按钮,它可以正常工作并关闭当前 View Controller 并将用户返回到主设置屏幕。第二个按钮是“保存”按钮,用于将用户数据提交到 NSUserdefaults。两个按钮都按照它们的设计进行操作。虽然我希望“保存”按钮再做一件事。

我希望导航栏的“保存”按钮继续按其设计保存为数据,但我也希望它“展开/退出”该 View Controller 并返回到主设置 View Controller ,就像“展开/退出”导航栏按钮。

这是我的 View Controller 代码。正如您将看到的,我正在从我的“settingSaveEmailAddress”函数中调用“backButtonTapped”函数。我知道正在触发“backButtonTapped”功能,因为“print”命令正在调试窗口中打印。虽然它正在保存我的数据,但无法关闭 View Controller 并返回到主设置 View Controller 。

import UIKit

class SettingsViewController: UIViewController {


@IBOutlet weak var settingEmailAddress: UITextField!
@IBOutlet weak var settingEmailAddressLastUpdate: UILabel!

// Constant keys for NSUserDefaults look ups
static let settingDefaultEmailAddress = "EMAIL_ADDRESS"
static let settingDefaultEmailAddressLastUpdated = "EMAIL_ADDRESS_LAST_UPDATED"


//End Setting - Email Address
@IBAction func settingSaveEmailAddress(sender: AnyObject) {

if (settingEmailAddress.text!.characters.count > 0) {
let prefs = NSUserDefaults.standardUserDefaults()
prefs.setObject(settingEmailAddress.text, forKey: SettingsViewController.settingDefaultEmailAddress)
saveTimestampEmailAddress()
}
dismissKeyboard()
print(settingEmailAddress.text)
backButtonTapped(self)




}
//End Setting - Email Address


override func viewDidLoad() {
super.viewDidLoad()

// Uncomment these if you want to clear out the saved defaults
//let appDomain = NSBundle.mainBundle().bundleIdentifier!
//NSUserDefaults.standardUserDefaults().removePersistentDomainForName(appDomain)

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(SettingsViewController.dismissKeyboard))
view.addGestureRecognizer(tap)

// update labels from NSUserDefaults
getUserPreferences()

// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


// Updates the view with the user values already stored in NSUserDefaults
func getUserPreferences() {
let prefs = NSUserDefaults.standardUserDefaults()

// Get Email Address
if let email = prefs.stringForKey(SettingsViewController.settingDefaultEmailAddress) {
settingEmailAddress.text = email
}

// Get the last time something was stored
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.LongStyle
dateFormatter.timeStyle = .MediumStyle
if let lastUpdateStored = (prefs.objectForKey(SettingsViewController.settingDefaultEmailAddressLastUpdated) as? NSDate) {
settingEmailAddressLastUpdate.text = "Last Update:" + dateFormatter.stringFromDate(lastUpdateStored)
} else {
settingEmailAddressLastUpdate.text = "Last Update: Never"
}
}


// MARK: - Keyboard responders so the keyboard goes away when we're done editing.
// Dismiss the keyboard when the user is finished editing.
func dismissKeyboard(){
// Resign the first responder status.
view.endEditing(true)
}

func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}

// Saves the timestamp of when the user has made a change to the NSUserDefaults
func saveTimestampEmailAddress() {
let prefs = NSUserDefaults.standardUserDefaults()
let timestamp = NSDate()
prefs.setObject(timestamp, forKey: SettingsViewController.settingDefaultEmailAddressLastUpdated)
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = NSDateFormatterStyle.LongStyle
dateFormatter.timeStyle = .MediumStyle
settingEmailAddressLastUpdate.text = "Last Update:" + dateFormatter.stringFromDate(timestamp)
}

func backButtonTapped(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
print("Exit Triggered")
}


}

最佳答案

你可以这样写:-

In Objective-C

 [self.navigationController popToRootViewControllerAnimated:YES];

In Swift

 func popToRootViewControllerAnimated(_ animated: Bool) -> [UIViewController]?

如果您的“主要设置”viewController 是根 viewController,则在“保存”按钮方法的末尾。

关于ios - 从保存按钮关闭 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38288638/

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