必要なすべてのアウトレット、ビュー、および制約を使用して、この UIViewController をストーリーボードにセットアップしました。完全。これを WatchStateController と呼びましょう。抽象親クラスとして機能します。
次に、アプリケーションの特定の状態に必要な機能を備えた WatchStateTimeController という WatchStateController のサブクラスを作成します。
UIStoryboard で 1 ビュー コントローラーを使用しようとしているため、WatchStateTimeController を WatchStateTimeController 型としてインスタンス化する際に問題が発生しています。WatchStateController としてインスタンス化されます。
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
WatchStateTimeController *timeController = (WatchStateTimeController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"WatchStateController"];
これは、ストーリーボードの Identity Inspector の「Class」フィールドが「WatchStateController」に設定されているためです。問題は、実行時に Identity Inspector で設定されたこのクラス名を変更するにはどうすればよいかということです。
注:私がこれをやろうとしている理由を無視して、方法に集中してください。その理由をどうしても知りたい場合は、Strategy デザイン パターンを参照してください。