小编flo*_*wer的帖子

标签栏单击委托

我有两个视图控制器(FirstViewController和SecondViewController)和一个标签栏控制器,我正在使用故事板.在FirstViewController中,用户可以拖放imageview.因此,每当用户点击显示SecondViewController的第二个TabBarItem时,我想检查用户是否每次单击TabBarItem时都删除了图像.

所以我理解这可以UITabBarDelegate用它的方法完成-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item.但我做错了,因为没有调用该方法,我相信这是因为我无法正确设置委托.所以我希望SecondViewController成为TabBarController的委托.

所以在我,SecondViewController.h我有以下

@interface SecondViewController : UIViewController<UITabBarDelegate>
Run Code Online (Sandbox Code Playgroud)

SecondViewController.m我有

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {
NSLog(@"%@", item);

}

- (void)viewDidLoad
{
[super viewDidLoad];
self.tabBarController.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)

但没有任何反应,在设置委托时我也收到编译器警告:从不兼容类型'SecondViewController*const __strong'分配给'id'

请温柔地对待我,这是我的第一个应用程序,也是我第一次尝试使用代表.

iphone xcode ios

4
推荐指数
1
解决办法
1万
查看次数

didSelectViewController在某些情况下不会被调用

我有许多已经报告的问题,didSelectViewController没有被调用,但在我的情况下它有时被调用.我有三个选项卡和三个视图控制器.每次用户按下第二个或第三个选项卡时,我都需要执行一些代码.在我的SecondViewController和ThirdViewController中,我有:

UITabBarController *tabBarController = (UITabBarController *)[UIApplication sharedApplication].keyWindow.rootViewController;
[tabBarController setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

现在一切正常,使用SecondViewController,didSelectViewController每次按下第二个选项卡时都会调用它.同样在ThirdViewController中didSelectViewController,每次按下第三个选项卡时都会调用它,但仅在第二个选项卡未被按下时才会被调用.所以当我在FirstViewController和ThirdViewController之间来回切换时,一切正常.但是当我进入第一个 - >第二个 - >第三个模式时,则didSelectViewController不会在ThirdViewController中调用.此外,当我第一次 - >第三次 - >第二次 - >第三次didSelectViewController在第三次调用时,第一次调用而不是第二次调用.有任何想法吗?

uitabbarcontroller ios

2
推荐指数
2
解决办法
2712
查看次数

标签 统计

ios ×2

iphone ×1

uitabbarcontroller ×1

xcode ×1