Je souhaite transférer l'image sur le bouton d'un bouton du contrôleur 1ère vue au 2ème contrôleur. Je ne peux pas comprendre que j'ai même donné la référence de mon 1 contrôleur de vue de mon 2ème contrôleur puis aussi le délégué n'est pas appeléLe délégué ne peut pas appeler le contrôleur 2ème vue
1.Heres mon code pour le contrôleur 1ère vue
protocol ViewControllerDelegate: class{
func Imagine(get: UIImage?)
}
class ViewController: UIViewController {
let button = UIButton()
weak var delegate:ViewControllerDelegate?
var image = UIImage(named:"face1.png")
override func viewDidLoad() {
super.viewDidLoad()
addButton()
addConstraints()
// Do any additional setup after loading the view, typically from a nib.
}
func addButton() -> Void {
button.setImage(UIImage(named:"face1.png"), for: .normal)
button.layer.borderColor = UIColor.white.cgColor
button.clipsToBounds = true
button.showsTouchWhenHighlighted = true
button.addTarget(self, action: #selector(buttonPressed), for: .touchUpInside)
view.addSubview(button)
}
func buttonPressed() -> Void {
pressed()
let alert = UIAlertController(title: "Alert", message: "Image sent to Tab 3", preferredStyle: UIAlertControllerStyle.alert)
let ok = UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: nil)
alert.addAction(ok)
self.present(alert, animated: true, completion:nil)
}
func addConstraints() -> Void {
button.snp.makeConstraints { (make) in
make.width.height.equalTo(150)
make.center.equalToSuperview()
}
}
func pressed(){
delegate?.Imagine(get: UIImage(named:"face1.png"))
}
}
2. Voici le code pour le contrôleur 2ème vue
class ViewController3: UIViewController, ViewControllerDelegate{
var imageView=UIImageView()
var obj:ViewController?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
// getImage = UIImage(named: "face3.png")
addView()
addConstraints()
**obj.delegate = self**
}
func addView() -> Void{
view.addSubview(imageView)
}
func addConstraints() -> Void {
imageView.snp.makeConstraints { (make) in
make.width.height.equalTo(150)
make.center.equalToSuperview()
}
}
//NOT Called
func Imagine(get: UIImage?) {
imageView.image = get
}
}
3.And ici est mon bar onglet contrôleur
class ViewController4: UITabBarController ,UITabBarControllerDelegate {
var v:ViewController?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
self.delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(true)
let tab1 = ViewController()
let tab1BarItem = UITabBarItem(title: "Tab1", image:UIImage(named:"bell-off-7.png"), selectedImage:UIImage(named:"bell-7.png"))
tab1.tabBarItem = tab1BarItem
let tab2 = ViewController2()
let tab2BarItem = UITabBarItem(title: "Tab2", image: UIImage(named:"bell-off-7.png"), selectedImage: UIImage(named:"bell-7.png"))
tab2.tabBarItem = tab2BarItem
let tab3 = ViewController3()
let tab3BarItem = UITabBarItem(title: "Tab3", image: UIImage(named:"bell-off-7.png"), selectedImage: UIImage(named:"bell-7.png"))
tab3.tabBarItem = tab3BarItem
self.viewControllers = [tab1,tab2,tab3]
}
}
ya thats ce que je veux demander comment puis-je faire cela entre commutation – vasu
pas cela ne fonctionne pas – vasu
Quelle est l'erreur que vous obtenez? –