如何将 UITextField 的内容传递给另一个由 UITabbarController 链接的 UITableViewController
How to pass content of UITextField to another UITableViewController linked by UITabbarController
我是 swift 3 中 iOS 开发的新手,我遇到了一些麻烦。
如下图所示,我有 2 个 UITableViewController,第一个带有文本字段。这两个 tableViews 由 tabbarController 链接 我想恢复文本字段的内容以在 secondTableViewController 中使用它。
我不知道该怎么做,关于数据传递的最常见教程用按钮操作进行了解释,但如果可能的话,我想简单地恢复更改 tableView 中的数据。
我希望我的问题很清楚。
在我的第一个 UITableViewController 中:
class InvestmentTableViewController: UITableViewController, UITabBarControllerDelegate
var someVariable: Float?
override func viewDidLoad()
{
super.viewDidLoad()
self.tabBarController?.delegate = self
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UITableViewController) -> Bool
{
let selectedVC:ExtraChargesTableViewController = viewController as! ExtraChargesTableViewController
selectedVC.totalInvest = self.someVariable
return true
}
在我的另一个 tabView 中
class ExtraChargesTableViewController: UITableViewController
{
var totalInvest: Float?
我不知道如何解决这个问题。
假设您有一个基于标签栏的项目,其中有两个视图控制器 FirstVC 和 SecondVC。
在 firstVC 中,您有一个 textField,并且您希望在 SecondVC 中使用该 textField。您可以在 shouldSelectViewController
委托方法中传递文本字段。所以这里是 FirstVC 应该看起来像
class FirstViewController: UIViewController,UITabBarControllerDelegate {
@IBOutlet weak var txtFldFirst: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tabBarController?.delegate = self;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool
{
NSLog("view controller descriptionn should select = %@", viewController.description);
let selectedVC:SecondViewController = viewController as! SecondViewController
selectedVC.txtFld = self.txtFldFirst
return true;
}
SecondVC 应该是这样的
class SecondViewController: UIViewController {
var txtFld : UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
NSLog("text fld = %@", txtFld.text);
}
输出将是 FirstVC 中存在的文本字段的文本。
UITableViewController,同理
import UIKit
class FirstTableViewController: UITableViewController,UITabBarControllerDelegate {
var txtFldFirst:UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
txtFldFirst = UITextField(frame: CGRectMake(20, 100, 150, 30));
txtFldFirst.text = "Hello World"
self.view.addSubview(txtFldFirst);
self.tabBarController?.delegate = self;
}
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool
{
NSLog("view controller descriptionn should select = %@", viewController.description);
let selectedVC:SecondTableViewController = viewController as! SecondTableViewController
selectedVC.txtFld = self.txtFldFirst
return true;
}
第二张表VC
import UIKit
class SecondTableViewController: UITableViewController {
var txtFld:UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
NSLog("text fld text = %@", self.txtFld.text);
}
编码愉快...
我是 swift 3 中 iOS 开发的新手,我遇到了一些麻烦。 如下图所示,我有 2 个 UITableViewController,第一个带有文本字段。这两个 tableViews 由 tabbarController 链接 我想恢复文本字段的内容以在 secondTableViewController 中使用它。 我不知道该怎么做,关于数据传递的最常见教程用按钮操作进行了解释,但如果可能的话,我想简单地恢复更改 tableView 中的数据。
我希望我的问题很清楚。
在我的第一个 UITableViewController 中:
class InvestmentTableViewController: UITableViewController, UITabBarControllerDelegate
var someVariable: Float?
override func viewDidLoad()
{
super.viewDidLoad()
self.tabBarController?.delegate = self
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UITableViewController) -> Bool
{
let selectedVC:ExtraChargesTableViewController = viewController as! ExtraChargesTableViewController
selectedVC.totalInvest = self.someVariable
return true
}
在我的另一个 tabView 中
class ExtraChargesTableViewController: UITableViewController
{
var totalInvest: Float?
我不知道如何解决这个问题。
假设您有一个基于标签栏的项目,其中有两个视图控制器 FirstVC 和 SecondVC。
在 firstVC 中,您有一个 textField,并且您希望在 SecondVC 中使用该 textField。您可以在 shouldSelectViewController
委托方法中传递文本字段。所以这里是 FirstVC 应该看起来像
class FirstViewController: UIViewController,UITabBarControllerDelegate {
@IBOutlet weak var txtFldFirst: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.tabBarController?.delegate = self;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool
{
NSLog("view controller descriptionn should select = %@", viewController.description);
let selectedVC:SecondViewController = viewController as! SecondViewController
selectedVC.txtFld = self.txtFldFirst
return true;
}
SecondVC 应该是这样的
class SecondViewController: UIViewController {
var txtFld : UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
NSLog("text fld = %@", txtFld.text);
}
输出将是 FirstVC 中存在的文本字段的文本。
UITableViewController,同理
import UIKit
class FirstTableViewController: UITableViewController,UITabBarControllerDelegate {
var txtFldFirst:UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
txtFldFirst = UITextField(frame: CGRectMake(20, 100, 150, 30));
txtFldFirst.text = "Hello World"
self.view.addSubview(txtFldFirst);
self.tabBarController?.delegate = self;
}
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool
{
NSLog("view controller descriptionn should select = %@", viewController.description);
let selectedVC:SecondTableViewController = viewController as! SecondTableViewController
selectedVC.txtFld = self.txtFldFirst
return true;
}
第二张表VC
import UIKit
class SecondTableViewController: UITableViewController {
var txtFld:UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
NSLog("text fld text = %@", self.txtFld.text);
}
编码愉快...