Предположим, у вас есть проект на основе табулатуры, где есть два контроллера управления FirstVC и SecondVC. В firstVC у вас есть textField, и вы хотите, чтобы textFiled использовался в SecondVC. Вы можете передать текстовые поля в методе делегата 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);
}
выход будет текст TextField, присутствующего в 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;
}
Второй tableVC
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);
}
Счастливый кодирования ...
большое спасибо! –
Я протестировал вашу реализацию, и я не могу восстановить свою ценность. Это потому, что моя цель - UITableViewController? или я сделал что-то неправильно, я попытался набросить его, но он разбился, и когда я модифицировал голову метода, компилятор сказал мне, что метод Instance «tabBarController (_: shouldSelect :)» почти соответствует необязательному требованию 'tabBarController (_: shouldSelect :)' of protocol 'UITabBarControllerDelegate' –
Я тестировал его, беря два tableVC, он работает. Если вы столкнулись с проблемой, пожалуйста, дайте мне знать. Процедура такая же. – Janmenjaya