UIPageViewController
のデータをViewControllers
の1つに渡したいとします。 は、私は、プロトコルがそうのように設定している:準拠した子ViewController
でデリゲートを使用してUIPageViewControllerから子ViewControllerにデータを渡す方法
class PageVC : UIPageViewController{
var delegate : Delegate?
var count : Int = 1
func classMethod(){
self.displayPageForIndex(5) //this controlls the tranistion to the child ViewController
self.delegate?.protocolMethod(count : self.count)
}
}
:
protocol Delegate : class{
func protocolMethod(count:Int)
}
そしてUIPageViewController
に、私はviewDidLoad
に何をやったか
class ChildVC : UIViewController , Delegate{
func protocolMethod(count : Int){
print(count)
}
override func viewDidLoad() {
super.viewDidLoad()
let pvc = PageVC()
pvc.delegate = self
}
}
は、ほとんどです私が試した単純化された解決策ですが、まだ答えを見つけることができませんでしたPageViewController
子ViewController
はプロトコルメソッドの受信者です。 誰かがprepareForSegueを使わずに達成するのを手伝ってもらえれば(それはセグがないので)、非常に感謝しています。
あなたの 'ChildVC'と' PageVC'はどこでインスタンス化されていますか?また、デリゲートの名前を指定することをお勧めします。 – toddg
私は、子VCをインスタンス化し、次にそれらを配列に追加する関数を持っています。 PageVC自体はインスタンス化されていません(もちろん、PageViewControllerの機能は完全に機能しますので、子VCSとは異なる方法でインスタンス化されます)。ここでの名前は、私には何をすべきかというアイデアを得るための場所保持者です。私は実際のコードで特定の名前を使用します@toddg –
「PageVC自体はインスタンス化されていません」明らかに、クラスとインスタンスiOS/Cocoaプログラミングでのインスタンスの作成方法基本的なことは何もありません。オブジェクトについて知っていない限り、オブジェクト指向プログラミングを行うことはできません。 – matt