首先,在这种情况下不要使用presentedViewController。这是为了获得对您以模态方式呈现的视图控制器的引用 - selectedViewController 是您所需要的。
是的,viewDidLoad 将是获取对所选视图控制器的引用的错误位置,因为它还不存在。
您分两步创建标签栏控制器:
首先,您创建您的实例。这是将调用 alloc、init 和您的视图生命周期方法的时间点。
其次,设置视图控制器数组。
如果您尝试在 viewDidLoad 中获取引用,则在为标签栏控制器分配视图控制器数组之前,您将尝试在第一步中获取引用。
您应该做的是创建一个自定义方法以在您的标签栏控制器中启动,您将从创建标签栏控制器的类中调用该方法。只需确保在将视图控制器数组分配给标签栏控制器后调用该方法即可。然后,您将能够在您的自定义方法中使用 selectedViewController 获得有效的参考。
编辑:对于情节提要,将代码移动到 viewDidAppear - viewDidLoad 在视图可见之前被调用,因此尚未选择视图控制器。在 viewDidAppear 中,使用 selectedViewController(不是 presentViewController),此时它将包含一个有效的引用。