Tag: uitabbarcontroller

使用自定义标签栏控制器

Tabbar Controller是iOS中最受欢迎的容器控制器之一。 几乎所有流行的应用程序都使用此控制器,例如Facebook,Youtube,Instagram,LinkedIn,Airbnb等。如果要在iOS中工作,则很有可能必须使用此组件。 标签栏控制器界面的每个标签都与一个自定义视图控制器关联。 当用户选择特定的选项卡时,选项卡栏控制器将显示相应视图控制器的根视图,以替换任何先前的视图。 在Apple提供的文档中,您可能会注意到Tabbar Controller的此示例图像: 在这里您可以看到,只需用手指轻按即可转到不同的屏幕。 导航非常方便。 今天,我们将尝试实现一个小的测试应用程序,该应用程序将使用Tabbar Controller,它具有五个选项卡,每个选项卡具有不同的背景颜色和标题。 另外,如您在上图中看到的那样,当选中某个选项卡时,该选项卡将变为黄色,而当未选中该选项卡时,该选项卡将变为灰色。 为了获得这种效果,我们将需要两个不同的图像用于相应的选定和未选定条件。 足够的理论可以使我们的手变得肮脏。 启动Xcode,创建一个新项目。 如果运行,您将看到一个空白的视图控制器。 这是因为ViewController类从情节提要中指向rootViewController,并且当然没有Tabbar控制器。 因此,让我们继续创建UITabbarController的子类,将其命名为MainTabbarController,并在AppDelegate的didFinishLaunching方法中将其设置为rootViewController。 这是该代码: 这是我们要构建的Tabbar控制器。 在这里,我们看到5种不同的视图控制器,例如Home,Search,Plus,Like和Profile控制器。 现在,搜索控制器处于选定状态。 创建一个名为setupViewControllers的函数,并将以下代码添加到该函数中: 现在,我们将向该应用程序添加一些奖励功能。 假设我们想将登录/注销功能与UITabbar Controller集成在一起。 处理这种情况的正确方法是什么? 让我们找到这个东西。 注销功能非常简单。 将以下代码放入ProfileController中: 看,没有选项卡栏项。 按下取消按钮,您将找到全部。 我特意带来了这个小功能,因为我希望您习惯于使用制表符栏控制器委托方法。 您可以从GitHub下载该应用程序的源代码。 链接在这里 : https://github.com/salehmasum/CustomTabbarController 希望您喜欢这篇文章。 感谢您的阅读。

运行时中的动态TabBar项-iOS(Swift)

假设您有一个同时提供免费和高级内容的应用程序。 显然,您不希望免费用户访问针对高级用户的内容。 例如,我们正在向用户提供在线视频课程。 免费用户可以访问和流媒体免费视频。 高级用户可以流式传输所有视频,下载视频,访问社区论坛并提出问题与解答。 根据用户的计划,我们有一个API可以提供该用户可用的功能列表。 例如,考虑API的JSON响应如下所示。 JSON响应(免费用户): { “计划”:“免费”, “功能”:[“视频”,“个人资料”] } JSON响应(高级用户): { “ plan”:“ PAID”, “功能”:[“视频”,“论坛”, “下载”, “轮廓” ] } 解析完上述JSON响应后,我们将获得功能列表。 然后,我们将迭代并将不同的TabBar项目添加到UITabBarController。 让我们创建一个枚举来定义一组功能。 这提供了当前版本应用程序的所有可用功能。 枚举功能:字符串{ 案例视频=“视频” 案例下载=“下载” 案例论坛=“ FORUMS” 案例档案=“ PROFILE” } 现在,我们从JSON响应中获得了免费用户和付费用户的功能列表。 让我们开始迭代视图控制器以显示在UITabBarController中。 为所有功能选项卡加载视图控制器 上面的代码似乎有很多字符串和重复的代码。 我们可以通过涉及一种新类型来重构它。 让我们创建一个TabItem类型来封装所有信息,并使它看起来更干净。 提取常用属性以显示“选项卡项目” 使用TabItem类型,我们将所有字符串提取到一个类型中,并创建了静态TabItem以定义不同的选项卡。 另外,我包括了order属性,以使选项卡项保持我们想要的顺序。 我还在TabItem中添加了一个辅助方法,以从相应的故事板上加载视图控制器。 加载“功能”选项卡的视图控制器的助手方法 使用上述方法,我们可以将TabItem类型转换为要加载的ViewController。 这将有助于消除重复的代码。 加载用于运行时功能列表的所有视图控制器的超级简单方法。 将所有TabItem添加到数组中之后,我使用顺序对其进行了排序,还将它们转换为ViewController。 而已。 我们完了。 多田!! 🎉 改进之处: 无需对ViewControllers名称进行硬编码,我们可以按照我在此处说明的方式从类型中提取:https://medium.com/@dinaraja/load-view-controllers-effortless-swift-dd49f11f1d99 […]

iOS 11只有崩溃的问题 – 当我点击一个标签栏应用程序崩溃

当我只从hometabviewcontroller点击一个特定的标签栏时,我得到以下崩溃错误。 这只发生在iOS 11.请帮我解决这个问题。 2017-10-23 16:48:57.000890+0400 FixtrProvider[2520:910402] desc: -[UIView refreshControl]: unrecognized selector sent to instance 0x10af090d0 2017-10-23 16:48:57.001223+0400 FixtrProvider[2520:910402] name: NSInvalidArgumentException 2017-10-23 16:48:57.001308+0400 FixtrProvider[2520:910402] user info: (null) 2017-10-23 16:48:57.001441+0400 FixtrProvider[2520:910402] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView refreshControl]: unrecognized selector sent to instance 0x10af090d0' 以下是根据请求我的HomeTabView控制器的整个页面。 @interface HomeTabBarController () { ChatSocketIOClient *socket; } @property […]

刷新整个iOS应用程序

我正在使用显示数据库中某个人的信息的标签工作。 在我的一个标签中有一个文本框,用户可以通过它来search一个新的人。 我的问题是,如何使用新人的信息刷新我的所有标签页? 我做了一个服务器调用,并获取所有新的信息,但我不知道如何刷新整个应用程序。 任何帮助,将不胜感激。 谢谢

在收到服务器请求的响应后的一定时间间隔后更改选项卡视图

在具有UITabBarController的应用程序中,我想实现以下scheme: 当用户在“X”标签上时 ,他/她做了一些事情,然后移动到另一个标签。 再次回到'X'标签( 说5分钟后 – >这个很重要,因为我将来可能会改变5分钟到10分钟 ),那么我想显示一些信息,比如你的'Session is expired'。 每当用户返回“X”标签,就需要服务器请求获取响应码。 取决于我想显示popup“会话已过期”。 我想下面的方式来实现: 在每个viewWillAppear:所有视图的方法被加载在'X'选项卡 viewController的UITabBarController我会做服务器请求和检查响应和执行相应的操作。 但是它会涉及到很多我想避免的服务器请求。 我无法用解决scheme来结束。 我怎样才能达到我的要求? 非常感谢你的帮助。

为标签栏IOS设置图像

当我尝试为iOS应用程序的标签栏项目图标设置png图像时遇到问题。 如果我创buildPNG图像(透明背景)并设置它,一切都按预期工作,但是当我使用另一个PNG文件(由另一个人创build,或从网上下载)不起作用。 其实在我的情况下,我从.pdf文件制作PNG文件,这绝对不清楚为什么这不起作用。 欲了解更多信息,请参阅下面的屏幕截图(顶部图像代表不工作之一)。 提前致谢。

为什么在标签之间移动,重新初始化歌曲?

我有一个在线广播播放器与选项卡页脚function。 第一个选项卡包含播放器,第二个网站和第三个消息框。 现在发生的事情是,当我在第一个页脚播放歌曲,然后去另一个页脚,并返回到第一个页脚,歌曲再次开始。 这里是代码: FirstViewController.m #import "FirstViewController.h" CM_EXPORT const CMTime kCMTimeZero; @interface FirstViewController () @end @implementation FirstViewController @synthesize metadatas; @synthesize toggleButton; @synthesize slider; @synthesize mpVolumeView = _mpVolumeView; @synthesize viewVolume; – (void)viewDidLoad { toggleIsOn=TRUE; MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:self.viewVolume.bounds] ; [self.viewVolume addSubview:volumeView]; [volumeView sizeToFit]; [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; } – (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(IBAction)playButtonPressed:(id)sender […]

uitabbarcontroller storyboard:连接已经连接到另一个uitabbarctrl的viewcontroller

我试图在故事板中重复使用我的一些观点。 我从一个uitabbarcontroller开始,并为每个选项卡连接一些视图。 现在,我把一个新的uitabbarcontroller放到故事板中,我想将其中的一个选项卡连接到与原始tabbar相连的SAME viewcontroller。 你能像这样在故事板中重复使用“视图控制器”吗? 或者你必须创build新的视图控制器? 我假设前者的作品,因为我可以通过select“推”在故事板中的其他地方。 如果我select“关系”,这只是不与uitabbar合作。 好。 我发现我的崩溃的原因,我想我知道发生了什么事情。 看来,如果我连接另一个uitabbarcontroller,那么第一个tabbar的视图索引就搞砸了。 我正在做什么来获得在uitabbar使用的视图控制器的引用 UINavigationController* ar_nav=[self.viewControllers objectAtIndex:1]; _artvc = [ar_nav.viewControllers objectAtIndex:0]; if (![_artvc isKindOfClass:[ArtistTableViewController class]]) { TGLog(@"ERR wrong class! %@", [_artvc class]); exit(0); } 只要我连接第二个uitabbar原来索引1不是那个类(即使故事板显示它)。 在我的原始tabbar控制器上使用此代码 UINavigationController* n; for (n in self.viewControllers) { UIViewController* vc=[n.viewControllers objectAtIndex:0]; TGLog(@"%@", [vc class]); if ([vc isKindOfClass:[ArtistTableViewController class]]) { _artvc = (ArtistTableViewController*)vc; […]

无法使用滑动侧菜单UITabBarController

我试图结合UITabBarController和滑动侧菜单。 对于Sliding Side菜单,Im使用SWRevealViewController 我成功创build滑动菜单,但我不能够包括我怎样才能整合UITabBarController与SWRevealViewController或有任何其他方式通过我可以将UITabBarController与滑动侧菜单?

为什么图像显示在UITabBar,在选定的项目,不正确?

我有一个UITabBar并为选项卡(活动项目,无效项目)设置2个图像。 在无效项目选项卡图标上正确显示为: 图片在这里 但是当这些项目处于活动状态时,图标显示不正确: 图片在这里 任何人都可以帮我解决它? 我的意思是,它只会将图标的边框颜色,而不是完全