web-dev-qa-db-ja.com

プログラムでストーリーボードIDを取得しますか?

UIViewControllerまたはUIViewがストーリーボードIDを識別できるかどうかを確認しようとしています。期待していたこと:

UIViewController *aViewController;
NSString *storyboardID = aViewController.storyboard.id;  //not an actual property

または:

NSString *storyboardID = [aViewController.storyboard valueForKey:@"storyboardId"];  //also not a working call

しかし、喜びはなく、同様のソリューションをオンラインで見つけることができませんでした。これが可能かどうかは誰にもわかりますか?

70
Jalakoo

RecoveryIdentifierを使用できます。これはStoryboard識別子のすぐ上にあり、UIViewControllerプロパティです。

91
Lolloz89

復元IDを使用できます。

NSString *restorationId = self.restorationIdentifier;

[ストーリーボードIDを使用]チェックボックスをオンにするだけです

57
Erickson1

ストーリーボードIDは、ストーリーボードからVCを検索してインスタンス化することのみを目的としています。UIStoryboardリファレンスに記載されているとおり:

「この識別子は、View Controllerオブジェクト自体のプロパティではなく、ストーリーボードファイルがView Controllerを見つけるためにのみ使用されます。」

なぜあなたはそれが必要なのですか?

21
LombaX

次のようなことも試してみてください:-

NSString *restorationId = [viewController valueForKey:@"storyboardIdentifier"];

これにより、インターフェイスビルダーで設定したストーリーボードIDが正確に表示されます。

6
Apple_iOS0304

UIViewControllerまたはUIViewの「id」を返すための最も信頼できる方法は...

NSString *viewControllerName = [[NSString alloc] initWithString:viewController.nibName];

これにより、「29w-Ic-LNo-view-FDu-oq-UpZ」が返されます。「29w-Ic-LNo」はUIViewControllerのオブジェクトID、「FDu-oq-UpZ」はUIView。

ただし、使用することもできます...

NSString *viewControllerName = [[NSString alloc] initWithString:viewController.title];

これにより、属性インスペクターでUIViewControllerの「タイトル」が返されます。ストーリーボードIDをUIViewControllerに追加したのと同じくらい簡単に、タイトルを追加することもできます。

1
serge-k

クラス名と比較できます。クラスをインポートしてから試してください。

NSArray *viewControllers = self.navigationController.viewControllers;
UIViewController *root = [viewControllers objectAtIndex:0];
if ([root isKindOfClass:[UserLogin class]]) {
//--- do ---
}
0