Swift 4
Существует так много подходов к передаче данных в swift. Здесь я добавляю некоторые из лучших подходов к нему.
1) Использование StoryBoard Segue
Сетчатые раскладки очень полезны для передачи данных между контроллерами Source и Destination View Controllers и наоборот также.
// If you want to pass data from ViewControllerB to ViewControllerA while user tap on back button of ViewControllerB.
@IBAction func unWindSeague (_ sender : UIStoryboardSegue) {
if sender.source is ViewControllerB {
if let _ = sender.source as? ViewControllerB {
self.textLabel.text = "Came from B = B->A , B exited"
}
}
}
// If you want to send data from ViewControllerA to ViewControllerB
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination is ViewControllerB {
if let vc = segue.destination as? ViewControllerB {
vc.dataStr = "Comming from A View Controller"
}
}
}
2) Использование методов делегата
ViewControllerD
//Make the Delegate protocol in Child View Controller (Make the protocol in Class from You want to Send Data)
protocol SendDataFromDelegate {
func sendData(data : String)
}
import UIKit
class ViewControllerD: UIViewController {
@IBOutlet weak var textLabelD: UILabel!
var delegate : SendDataFromDelegate? //Create Delegate Variable for Registering it to pass the data
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
textLabelD.text = "Child View Controller"
}
@IBAction func btnDismissTapped (_ sender : UIButton) {
textLabelD.text = "Data Sent Successfully to View Controller C using Delegate Approach"
self.delegate?.sendData(data:textLabelD.text! )
_ = self.dismiss(animated: true, completion:nil)
}
}
ViewControllerC
import UIKit
class ViewControllerC: UIViewController , SendDataFromDelegate {
@IBOutlet weak var textLabelC: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func btnPushToViewControllerDTapped( _ sender : UIButton) {
if let vcD = self.storyboard?.instantiateViewController(withIdentifier: "ViewControllerD") as? ViewControllerD {
vcD.delegate = self // Registring Delegate (When View Conteoller D gets Dismiss It can call sendData method
// vcD.textLabelD.text = "This is Data Passing by Referenceing View Controller D Text Label." //Data Passing Between View Controllers using Data Passing
self.present(vcD, animated: true, completion: nil)
}
}
//This Method will called when when viewcontrollerD will dismiss. (You can also say it is a implementation of Protocol Method)
func sendData(data: String) {
self.textLabelC.text = data
}
}
/ run
/ runexit - Скомпилировать, а затем запустить. Закройте VB IDE, когда проект вернется в режим разработки.
/ make или / m имя проекта - компилирует исполняемый файл make с использованием существующих настроек в файле proj
/ out filename
/ outdir path Указывает путь к каталогу для размещения всех выходных файлов при использовании / make
/ d
/ cmd
/ mdi или / sdi
Запустить vb6.exe /? Чтобы получить больше информации.
Полученный отсюда некоторая дополнительная информация, которая принадлежит более старым версиям VB также. Та внешняя страница может в конечном счете исчезнуть.
Сводка
Командной строки VB Все Версии
vb*[.exe] [[{/run | /r} projectname] {/make | /m } projectname]{/cmd argument | /c argument}]
projectname
название Вашего проекта (.vbp) файл.
/run
или/r
Говорит Visual Basic компилировать и выполнять projectname использование аргументов, сохраненных в поле Command Line Arguments вкладки Make диалогового окна Project Properties. Можно выполнить больше чем один проект с помощью этой команды. Замените projectnameprojectgroupname
.
/make
или/m
Говорит Visual Basic компилироватьprojectname
и делать исполняемый файл (.exe) файлом, с помощью существующих настроек Пути, EXEName и свойств Title объекта APP. Можно скомпилировать и сделать исполняемый файл (.exe) файлом больше чем из одного проекта с помощью этой команды. Заменаprojectname
с [1 111].
/cmd
или/c
Помещает аргумент в поле Command Line Arguments на вкладке Make диалогового окна Project Properties. При использовании это должно быть последним, включают командную строку.Версии 4 + Только [1 135]
vb*[.exe] {/d compileconst} [{/makedll | /l} projectname]
/makedll
или/l
Говорят Visual Basic компилировать projectname и делать незавершенный сервер ActiveX (.dll) файлом от него.
/d
или/D
Говорит Visual Basic, который оценивает для использования для констант условной компиляции, заставляя.EXE с / сделать переключатель или DLL ActiveX с эти/makedll
переключатель.
compileconst
имена и значения констант условной компиляции используются в файле проекта.Версия 5 + Только [1 136]
vb*[.exe] [{/runexit} projectname][{/m} or {/runexit} projectname /out filename}][{/m}][/sdi] or [/mdi]
/runexit
Говорят Visual Basic выполнять projectname. Если по какой-либо причине файл изменяется в процессе выполнения, все изменения проигнорированы, и никакое диалоговое окно не появляется на выходе к режиму проектирования.
filename
название файла для получения ошибок, когда Вы создаете исполняемый файл с помощью/m
или/runexit
опция.
/out
Позволяет Вам указывать файл для получения ошибок, когда Вы создаете использование/m
или/runexit опция. Первая ошибка, с которой встречаются, помещается в этот файл с другой информацией о статусе. Если Вы не используете / опция, ошибки сборки командной строки отображены в окне сообщения. Эта опция полезна, если Вы разрабатываете несколько проектов.
/?
Списки доступные Параметры командной строки.
/sdi
Изменения среда Visual Basic к режиму SDI (Single Document Interface). Visual Basic остается в режиме SDI, пока Вы не изменяете его. Можно измениться на режим MDI при помощи/mdi
аргумент или путем очистки опции SDI Development Environment во Вкладке "Дополнительно" Окна параметров.
/mdi
Открывает Visual Basic в режиме MDI (Multiple Document Interface). Visual Basic остается в режиме MDI, пока Вы не изменяете его. Можно измениться на режим SDI при помощи/sdi
аргумент или путем выбора опции SDI Development Environment во Вкладке "Дополнительно" Окна параметров. Режим MDI является значением по умолчанию.
Немного работы Google предполагает, что такой список опций можно получить, перейдя в каталог, содержащий vb6.exe в командной строке и выполнив
vb6.exe /?