質問: result; //todo: segue to the next view??? } } } 私はセッション状態の変化をチェックするために上記のクラスメソッドを使っています、そしてそれはうまく動きます。 q: ユーザーのデータを取得したら、このカスタムクラス内から次のビューにどのように移動できますか? 編集: 明確にするために、ストーリーボードに識別子を持つセグエを持っています。そして、ビューコントローラではないクラスからセグエを実行する方法を見つけようとしています
回答: あなたがしたいことはユニットテストにとって本当に重要です。基本的にはview controllerで小さなローカル関数を作成する必要があります。関数に任意の名前を付け、performseguewithindentifierを含めるだけです。func localfunc() { println("we asked you to do it") performseguewithidentifier("doit", sender: self) } 次に、ユーティリティクラスfbmanagerを変更して、関数の引数を取るイニシャライザと、セグエを実行するviewcontrollerの関数を保持する変数を含めます。public class utilclass { var yourfunction : () -> () init (somefunction: () -> ()) { self.yourfunction = somefunction println("initialized utilclass") } public convenience init() { func dummylog () -> () { println("no action passed") } self.init(dummylog) } public func dothatthing() -> () { // the facebook login function println("now execute passed function") self.yourfunction() println("did that thing") } } (便宜上initを使用すると、セグエを実行せずに単体テストでこれを使用できます。)最後に、// todo:がある場合は次のビューに進みます。???、次の行に沿って何かを置きます。self.yourfunction() 単体テストでは、単に次のように呼び出すことができます。let f = utilclass() f.dothatthing() dothatthingはfbsessionstatechange、utilclassはfbmanagerです。実際のコードでは、fbmanagerクラスにlocalfunc(括弧なし)を渡すだけです。