如果 myViewController 是 UIViewController 的子类,那么你真的应该这样做:
myViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"myViewControllerStoryboardId"];
您还需要确保将 Storyboard 中自定义 UIViewController 的类从通用 UIViewController 更改为 myViewController(在 StoryBoard 中选择您的 VC,然后转到右侧的第三个选项卡“Identity Inspector” -hand Utilities 屏幕。您可以在那里将自定义 VC 的类更改为您的子类)。
问题编辑后更新:
UIViewController 类是 UIKit 的一部分。任何时候你需要定制一个超出 SB 的 VC,你需要继承 UIViewController(并创建一个定制的 VC)。因此,如果您尝试在不继承 UIVC 的情况下拥有 UIVC 的自定义属性(dataObject),答案是您不能。
话虽如此,也许这个问题并不完全清楚。如果您正在寻找具有属性 dataObject 但具有该子类的多个实例的 UIVC 的子类;您始终可以创建该子类一次,然后拥有该类的多个实例,您将为其赋予不同的名称,因此:
myViewController* viewController1 = [self.storyboard instantiateViewControllerWithIdentifier:@"myViewControllerStoryboardId"];
myViewController* viewController2 = [self.storyboard instantiateViewControllerWithIdentifier:@"myViewControllerStoryboardId"];
myViewController* viewController3 = [self.storyboard instantiateViewControllerWithIdentifier:@"myViewControllerStoryboardId"];
它们都是同一个子类 (myViewController) 的不同实例,并且每个实例的 dataObject 的值都是不同的。换句话说,您可以设置:
viewController1.dataObject=someObject;
viewController2.dataObject=anotherObject;