【发布时间】:2013-06-03 15:04:45
【问题描述】:
我的应用中有以下设置:
带有 3 个视图控制器的 UITabbarController,内嵌 UINavigationController。 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 类,以便在关闭选项卡控制器时收到通知并解决错误?
【问题讨论】:
标签: ios objective-c sdk uitabbarcontroller