【发布时间】:2013-06-13 20:47:10
【问题描述】:
我有两个视图控制器(FirstViewController 和 SecondViewController)和一个标签栏控制器,我正在使用 Storyboards。在 FirstViewController 中,用户可以拖放一个 imageview。因此,每次用户单击显示 SecondViewController 的第二个 TabBarItem 时,我想检查用户是否在每次单击 TabBarItem 时丢弃了图像。
所以我知道这可以通过UITabBarDelegate 及其方法-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 来完成。但是我做错了,因为没有调用该方法,我相信这是因为我无法正确设置委托。所以我希望 SecondViewController 成为 TabBarController 的代表。
所以在我的SecondViewController.h 我有以下内容
@interface SecondViewController : UIViewController<UITabBarDelegate>
在SecondViewController.m 我有
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"%@", item);
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.tabBarController.delegate = self;
}
但是没有任何反应,在设置委托时,我还收到编译器警告:Assigning to 'id' from in compatible type 'SecondViewController *const __strong'
请对我温柔一点,这是我的第一个应用,也是我第一次尝试使用委托。
【问题讨论】:
-
要在 Swift 中使用
UITabBarController检测水龙头,请参阅this question