2017-07-06 14 views
1

第1ビューコントローラのボタンをクリックして第2コントローラに画像を渡したいと思います。私も、私は、デリゲートは、第一ビューコントローラ代理人が第2ビューコントローラを呼び出すことができません

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用

1.Heres私のコードと呼ばれていませんまた、その後、私の第二のコントローラに私の1つのビューコントローラの参照を与えていることを理解することができません。ここでは第二ビューコントローラここ

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のコードは私のタブバーコントローラです

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] 
} 

} 

答えて

0

タブを切り替えるときにイメージを設定する必要があります。 現在、あなたは、まだ表示されていないviewControllerのイメージを変更しています。

あなたはタブバーのViewControllerで

がViewController2のviewWillAppear

var tappedImage:UIImage? 
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")) 
    tab1BarItem.tag = 0 
    tab1.tabBarItem = tab1BarItem 


    let tab2 = ViewController2() 
    let tab2BarItem = UITabBarItem(title: "Tab2", image: UIImage(named:"bell-off-7.png"), selectedImage: UIImage(named:"bell-7.png")) 
    tab2BarItem.tag = 1 
    tab2.tabBarItem = tab2BarItem 


    let tab3 = ViewController3() 

    let tab3BarItem = UITabBarItem(title: "Tab3", image:  UIImage(named:"bell-off-7.png"), selectedImage: UIImage(named:"bell-7.png")) 
    tab3BarItem.tag = 2 
    tab3.tabBarItem = tab3BarItem 
    self.viewControllers = [tab1,tab2,tab3] 
} 

    func Imagine(get: UIImage?) { 
     tappedImage = get 
    } 

     func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) { 
      if let secondVC = viewController as? ViewController2 { 
       secondVC.selectedImage = tappedImage 
      } 
     } 

のような変数tappedImageを追加し、各項目にタグを追加し、didSelectViewControllerデリゲート機能を利用することができますがimageViewの画像

として tappedImageを設定します
+0

私はどのように私は切り替えることの間にそれを行うことができます質問したいことthats – vasu

+0

これは動作していません – vasu

+0

何がエラーですあなたが得ている? –

関連する問題