2016-08-23 7 views
0

iPadアプリのマスター(左)と詳細(右)ビューのSplitViewがあります。マスタービューのボタンをクリックすると親スプリットビューでこのメソッドがデリゲートされ、新しいビューが一番上に表示されますが、デリゲートメソッドは呼び出されません。どうして?ここでDelegateはSplitViewで動作しません

コード:

マスタービュー:

protocol newAlbumDelegate{ 
    func openAlbum() 
} 
class newAlbumController: UIViewController { 
    var delegate:newAlbumDelegate? 

    @IBAction func buttonClick(sender:UIButton){ 
     delegate?.openAlbum() 
    } 
} 

SplitView:

import UIKit 

class AlbumSplitController: UISplitViewController, newAlbunDelegate { 

    var newAlbumToAdd:newAlbumController = newAlbumController() 

    //Delegate 
    func openAlbum(){ 
     print("Do something") 
    } 

    override func viewDidLoad(){ 
     super.viewDidLoad() 
     self.newAlbumToAdd.delegate = self 
    } 

任意のヘルプ?

よろしく、masterViewController

+0

私はエラーが私が作成していますということだと思い新しいマスタービューですが、SplitView用に作成されたマスタービューを取得する必要がありますか? – amelian

+0

読みやすくするために、この質問のタイプミスを修正したいと思うかもしれません:splitViewの "newAlbunDelegate" – Shades

答えて

0

、デリゲートとしてsplitViewControllerを割り当てる:

protocol newAlbumDelegate{ 
    func openAlbum() 
} 
class newAlbumController: UIViewController { 
    var delegate:newAlbumDelegate? 

    @IBAction func buttonClick(sender:UIButton){ 
     delegate?.openAlbum() 
    } 

    override func viewDidLoad(){ 
     super.viewDidLoad() 
     let splitView = self.splitViewController as! AlbumSplitController 
     self.delegate = splitView 
    } 
} 

あなたsplitViewControllerは次のようになります。

class AlbumSplitController: UISplitViewController, newAlbumDelegate { 

    //Delegate 
    func openAlbum(){ 
     print("Do something") 
    } 
} 
関連する問題