相关疑难解决方法(0)

检测何时按下标签栏项目

我有一个根视图控制器,它没有被设置为我的故事板上任何视图控制器的自定义类.相反,我的所有视图控制器都是这样的子类.

// RootViewController
class RootViewController: UIViewController, UITabBarDelegate { 

    // This is not getting executed on any of the view controllers
    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
        print("ddd")
    }
}

// Subclassing it 
class TopStoriesViewController: RootViewController {

}
Run Code Online (Sandbox Code Playgroud)

但是,当在视图控制器上按下tabbaritem时,我似乎正在努力做某事,该视图控制器是rootviewcontroller的子类,即消息未被打印.

uitabbarcontroller uitabbar swift

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

永远不会调用UITabBarController委托方法

我正在重构我的iPad应用程序而不是NavigationBar上的按钮,我想将我的Logout按钮作为TabBar按钮项.

我的所有观点都在一个独特的StoryBoard中,所以我通过这种方式在我的Appdelegate.m中获取了我的TabBar:

// Add logout tab to tabbar
storyboard                      = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tabbar      = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabbar"];
[tabbar setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

当然,委托协议是在我的Appdelegate.h中声明的

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>
Run Code Online (Sandbox Code Playgroud)

之后,我创建一个空的viewController以创建我的注销选项卡:

UIViewController *logout        = [[UIViewController alloc]init];
Run Code Online (Sandbox Code Playgroud)

然后我将tabbar viewControllers作为NSMutableArray并添加我的注销VC:

NSMutableArray *viewControllers = [NSMutableArray arrayWithArray:[tabbar viewControllers]];

[viewControllers addObject:logout];
Run Code Online (Sandbox Code Playgroud)

最后我用我的新数组设置tabbar viewControllers:

[tabbar setViewControllers:viewControllers];
Run Code Online (Sandbox Code Playgroud)

我认为这些步骤是正确的.那么为什么在更改显示的选项卡时不会调用didSelectViewController?

如果它可以帮助,这是我的didSelectViewController方法(在AppDelegate.m中写入)

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog(@"onglet sélectionné : %d / %d", [tabBarController selectedIndex], [[tabBarController viewControllers]count]);
    //select the index where your logout button is
    if ([tabBarController selectedIndex] == [[tabBarController viewControllers]count]-1) …
Run Code Online (Sandbox Code Playgroud)

objective-c uitabbarcontroller ios appdelegate

5
推荐指数
1
解决办法
8522
查看次数

如何为标签栏的项目设置动画

在我的 Swift 应用程序中,我有一个处理UITabBar.

class CustomTabBar: UITabBar {
    override func awakeFromNib() {
        super.awakeFromNib()
    }
}
Run Code Online (Sandbox Code Playgroud)

当用户点击它们时,如何为项目设置动画?我的意思是 aCGAffine(scaleX: 1.1, y: 1.1) 那么我如何为标签栏的项目设置动画?

uitabbarcontroller ios swift

5
推荐指数
3
解决办法
3665
查看次数

标签栏单击委托

我有两个视图控制器(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万
查看次数

从IOS上的Instagram相机页面中的选项卡打开viewcontroller

我想要的是简单,IOS上的Instagram中间选项卡打开应用程序的相机界面,但不像其他选项卡,但作为一个独立的视图控制器,当你按下取消它回到你最后一个标签.

有任何想法吗??

camera uiviewcontroller ios instagram

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