我的应用程序中有以下设置:
一个带有 3 个视图控制器的 UITabbarController,嵌入了 UINavigationControllers。这 3 个视图控制器从称为“SVC”的 UIViewController 子类继承/超类,以实现在所有 3.视图控制器中使用的元素并防止重复代码。在这个“SVC”类中,我设置了一个名为“dismissDelegate”的委托(用于判断 tabbarcontroller 何时被关闭)。
@protocol ModalViewDelegate <NSObject>
- (void)didDismissModalViewFrom:(UIViewController *)viewController;
@end
@property (weak, nonatomic) id <ModalViewDelegate> dismissDelegate;
我的另一个与 UITabbarController 连接的视图控制器实现了这个委托,以便获取有关何时关闭 tabbarcontroller 的信息。
SVC 类通知代理解除标签栏,如下所示:
[self.dismissDelegate didDismissModalViewFrom:self];
我现在想将所有从 SVC 类(所有选项卡视图控制器)继承的视图控制器的委托设置为这个视图控制器,我尝试通过 prepareToSegue 方法来执行此操作,如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"ToTab"]) {
UITabBarController *tabBarController = segue.destinationViewController;
for (UINavigationController *navController in tabBarController.viewControllers) {
for (UIViewController *vc in navController.viewControllers) {
_SubclassVC = (SVC *) vc.superclass;
_SubclassVC.dismissDelegate = self;
}
}
}
}
但我收到以下错误:
+[SVC setDismissDelegate:]: unrecognized selector sent to class 0xbca68
我的问题:
- 这是解决此问题的正确方法(获取有关解除视图控制器的信息并将此委托设置在由多个视图控制器继承的子类中)?
- 我如何设法将我的第一个视图控制器设置为选项卡栏中所有视图控制器的代表 - SVC 类,以便在关闭选项卡控制器时收到通知并解决错误?