iOS:从Storyboard中唯一标识ViewControllers

时间:2011-12-28 19:58:41

标签: objective-c ios uiviewcontroller

我有一个可重复使用的自定义ViewController,并且任意数量的实例将在Storyboard中的NavigationController中链接在一起,所有实例都与代理共享相同的模型。

ViewController需要告诉模型它们是哪个实例。目前,他们有一个他们从segue获得的int属性,但它似乎不是非常惯用的,并且不适合屏幕上有多个实例(对于iPad)。我认为必须有一个更清洁的方法来做到这一点,所以有谁知道它是什么?感谢。

结果:self.view.tag

4 个答案:

答案 0 :(得分:8)

UIViewController的UIView有一个tag属性,您可以在任何地方设置该属性。您还可以使用[self class]简单地识别控制器的类型。或者直接通过引用控制器来使用内存位置。

更新您只需使用类别为UIViewController实现唯一标识符。

答案 1 :(得分:1)

我认为在设计架构方面“最干净”的方式可能是ViewControllers数组。 (它可以在app委托中进行管理。)但是,有一些内存注意事项 - 在iPhone上你可能想要创建并根据需要销毁视图控制器。该数组可以包含identifier以及其他一些与模型相关的信息,以便根据需要重新创建控制器。

答案 2 :(得分:0)

太糟糕了,UIViewController没有属性storyboardIdentifier。它们可以使用此id进行实例化,但如果viewcontroller可以查询其id,则会很有帮助。

答案 3 :(得分:0)

我最近遇到了这个问题。我发现您可以在情节提要中添加“恢复ID”。然后,您可以像这样访问它(取决于您的用例)

navigationController?.viewControllers.first?.restorationIdentifier