问题标签 [uitabbarcontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - 重用 MFMailComposeViewController
我有一个基于 TabBar 的应用程序构建的应用程序,其中我需要一个基本上是电子邮件编写器的选项卡。所以我试图使用 MFMailComposeViewController 作为选项卡之一。这似乎工作正常,直到我真正去与控制器发送电子邮件。如果我这样做,MFMailComposeViewController 的视图会消失并且不能再次使用。
如果我正确阅读了文档,则 MFMailComposeViewController 通常以模态方式使用,但它也应该以非模态方式工作。
这就是我将它添加到标签栏的方式......
iphone - 删除 UITabBarController 的视图会导致 EXC_BAD_ACCESS 异常
我试图通过在控制器视图上调用 removeFromSuperview 来从我的应用程序的窗口中删除 UITabBarController ,然后再将其添加到窗口中。但是,当我这样做并成功解除分配栏上的所有视图控制器后,我会在自动释放池耗尽后收到 EXC_BAD_ACCESS 信号。通过方法调配我发现它发生在称为 UITableViewRowData 的东西调用了它的 dealloc 方法之后。我想知道当更多视图控制器试图被释放时是否存在错误。有没有其他人遇到过这个问题?
iphone - UITabBarController UINavigationController 设计建议
这更像是一个哲学问题,所以请给我你的想法。
iPhone SDK 文档指定您可以让标签栏控制器包含导航控制器,但您不能让导航控制器包含标签栏控制器。似乎有时您可能希望以表格方式组织视图中的视图,该视图是导航控制器堆栈的一部分。这不合理吗?
我接受 Apple 在这些领域的规定作为福音,因为 HIG 确实提供了似乎揭示阻力最小的路径的最佳实践(我相信这也有例外)。但是,在标签栏的情况下,我不确定其背后的设计原因。也许这对其他人来说是显而易见的,但我想不出一个很好的理由为什么你不允许标签作为根级视图控制器之外的任何东西。
大家觉得/知道什么?这会造成什么设计缺陷?您将如何解决希望在视图中以表格形式表示视图的问题?我需要重新考虑整个设计吗?
谢谢。
iphone - 将数组添加到 tabBarViewController.viewControllers 时出错
这是我指的代码:
当我使用行 initialTBC.viewControllers = [NSArray arrayWithObjects:aController, aController2, nil]; 或者如果我尝试将它分配给我已经制作的包含视图控制器的数组,我会在控制台中收到此错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“*** -[NSCFArray insertObject:atIndex:]:尝试插入 nil”
提前感谢您提供的任何帮助。
iphone - 如何检测表格视图屏幕上任何位置的触摸,而不仅仅是单元格?
当用户点击屏幕上的任意位置时,我想隐藏导航栏、状态栏和标签栏。此选项卡的视图是一个表格视图,但单元格处于非活动状态(它们存储图像和文本并且不执行任何操作)。
有没有一种方法可以检测 tableview 屏幕上的触摸?
在此先感谢您的帮助!
iphone - 标签栏不能作为另一个视图的子视图,但作为窗口的子视图可以正常工作?
我正在尝试在标题屏幕之后制作一个带有三个子视图的程序。其中两个视图只是标准的 nib 文件,带有 UIViewController 的子类来控制它们,第三个是 Tab Bar 视图。我似乎无法显示标签栏项目。我浏览了“开始 iPhone 开发”中的选项卡栏章节,它立即将选项卡栏控制器添加为应用程序委托中 Window 的子视图,并且效果很好。我想做的是在从标题屏幕中选择第三部分之后加载我的 rootView 控制器,然后向其中添加一个 Tab Bar 视图。每次我这样做时,我都会得到一个没有标签栏项目的空白标签栏。
看到我已经为此工作了几天,您可以提供的任何帮助将不胜感激。
谢谢
iphone - 如何动态更改 UItabbarcontrollers viewcontrollers 数组?
我正在使用 iPhone SDK 3.0 开发一个 iPhone 应用程序。它是一个基于视图的应用程序,由 tabbarcontroller 组成。我需要动态更改 tabbarcontroller 的 viewcontrollers 数组。
我刚刚使用以下代码完成了它:
但它只会更改可自定义的 viewcontrollers 数组,因此我无法切换到新视图。
我需要知道是否可以更改标签栏的 viewcontrollers 数组。如果是,我该怎么做?
问候, Syam S iPhone Devr。
iphone - 标签栏(底部)上的字体类型是什么?
我只想知道那是什么,以便我可以匹配我将在视图上使用的字体。
谢谢
iphone-sdk-3.0 - UITabBarController、MoreNavigationController 和设备旋转的圣杯
更新:先看看我对这个问题的回答。这似乎是一个错误。已经创建了一个最小的测试用例,并向 Apple 提交了一份报告。(自 iPhone OS 3.1 起已修复。)
这是来自“我是如此接近!”的谜题。部。
我有一个基于标签栏的 iPhone 应用程序。每个选项卡都有一个UINavigationController与通常的嫌疑人(导航栏,表格视图......这反过来又可以导致另一个 VC 等)。
现在,这些较低级别的 VC 之一将用于纵向和横向模式。但是有一个问题。我们的景观友好型 VC 的shouldAutorotateToInterfaceOrientation:不会被直接调用!该怎么办?
这就是我们所做的。在我在自己的文件中实现的标签栏控制器中,我有这个:
这最终将请求传播到我的景观友好型 VC,它也响应此消息。我所有的其他 VC 都没有实现这个方法,所以他们只是使用默认的纵向。
问题解决了!!!耶!
嗯,不完全是。:(
当从标签栏控制器的MoreNavigationController的深处调用我的风景友好型 VC 时,事情似乎不太顺利。
我决定比较/对比从前四个选项卡栏UINavigationControllers之一调用的VC ... 和从MoreNavigationController调用的同一个 VC 。这将有点超详细,所以请耐心等待。希望逐场比赛证明对侦查事情很有用。
当应用程序加载时,有几个对标签栏控制器的 shouldAutorotate... 方法的初始调用。在这些早期情况下,selectedViewController为 nil。但是,我们最终加载完成,选择了初始选项卡项,一切正常。
对。首先,让我们选择前四个标签栏项目之一并深入到我们的 VC。
我们将选择第三个导航栏项目,这就是第三个导航控制器。我们深入了解支持轮换的 VC。快速检查确认父级确实是我们标签栏的视图控制器列表中的第三个导航控制器。好的!
让我们旋转设备。标签栏控制器被要求自动旋转(参见上面的代码)。我们观察到selectedViewController也是第三个导航控制器,加上导航控制器的顶部和可见视图控制器都设置为我们可信赖的支持旋转的 VC。
因此,标签栏控制器会将shouldAutorotate消息转发给第三个导航控制器……但我们的旋转友好型 VC 最终会收到该消息。(我在这里没有做任何特别的事情。也许所需的 VC 会收到消息,因为它是顶部和/或可见的 VC?)无论如何,我们旋转到横向,调整大小,一切都很好。“巨大的成功!”
现在让我们点击后退按钮并弹出 VC 堆栈,在此过程中保留横向模式。再次查询标签栏控制器。
是时候在这里稍作休息了。我们的导航控制器的topViewController仍然是旋转友好的 VC,但是visibleViewController现在设置为UISnapshotModalViewController!呵呵。以前从未见过这个……但Erica Sadun 有。看起来它是用于“消失的视图控制器”(在这种情况下肯定是真的 - 它消失了)。
当我继续前进时,可见的 VC 保持为快照,但顶部的 VC 最终会更改为堆栈中的下一个 VC,因为我的特殊 VC 最终消失了。很公平。
所以这就是一切正常的场景。
现在让我们尝试相同的测试,只是这次我们将转到MoreNavigationController(更多选项卡栏项)并向下钻取到与之前相同的 VC 类。在我的例子中,它恰好是标签栏控制器的 VC 列表中的第 7 个。
我们进入旋转感知 VC 并且......这次它被要求直接旋转!根本不要求标签栏控制器获得旋转权限。唔。
快速检查父 VC 显示它是一个MoreNavigationController。好的,这是有道理的。
现在让我们尝试旋转设备。什么都没有被调用。我们的断点都没有被命中。不在我们的 VC 中。不在我们的标签栏控制器中。(咦?!?!)
好的。让我们弹出堆栈,回到同一个 VC 并再次尝试旋转。奇怪的。现在我们在标签栏控制器中接到一个请求自动旋转权限的电话。在这里,选择的控制器是我们信任的导航控制器(#7),但这次它的visibleViewController和topViewController设置为NIL!
一旦我们从这里继续,调试器控制台中会出现一条神秘消息:
使用两阶段旋转动画。要使用更平滑的单阶段动画,此应用程序必须删除两阶段方法实现。
神秘,因为我没有使用两阶段旋转动画!在我的源代码中的任何地方都没有SecondHalf方法变体。
唉,我的旋转感知 VC 从来没有被告知旋转正在发生(即使旋转确实发生在屏幕上),所以我的观点当然被弄乱了。混乱和悲伤随之而来。:(
在这一点上,我们甚至不会费心弹出堆栈。
我认为 View Controller 文档暗示了可能的问题:
如果您想在方向更改期间执行自定义动画,您可以通过以下两种方式之一进行。方向更改过去分两步发生,通知发生在旋转的开始点、中间点和结束点。但是,在 iPhone OS 3.0 中,添加了对一步执行方向更改的支持。使用一步方向更改往往比旧的两步过程更快,通常建议用于任何新代码。
我想知道MoreNavigationController是否仍在响应两步过程,因此是否会阻止任何使用一步过程的尝试?请注意,如果您回复两步消息,则一步变体将不起作用(同样,根据文档)。我没有回应他们,但我有一个偷偷摸摸的怀疑是幕后的东西。
事实上,如果我注释掉单步方法,并尝试响应willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:,我确实得到了备忘录!但它仍然不能非常干净地从堆栈中弹出(就视觉效果而言)。更奇怪的是:willAnimateFirstHalfOfRotationFromInterfaceOrientation:duration:没有被调用,即使我试图在 shouldAutorotateToInterfaceOrientation: 中偷偷调用 self (使用 FirstHalf 消息)。它在跟踪期间立即返回,就好像我从未定义过它一样。叹。
所以这就是逐场比赛。
总而言之,有没有人成功地处理了从标签栏控制器的 MoreNavigationController 中调用的 VC 的一步设备旋转?求知者想知道!
iphone - iPhone Dev - 延迟加载标签栏应用程序
How can I make it so when a tab is selected, the current one is unloaded, and the next one is loaded so only one loaded at a time? 或者我什至不应该这样做?我知道如何使用普通的 UIViewController 作为根 VC,但不确定使用 UITabBarController。另外,有没有办法动画从一个选项卡到下一个选项卡的过渡?有什么帮助吗?谢谢!!
编辑:...如果我卸载视图控制器,那么他们在标签栏上的图标就消失了......也许我会卸载他们的视图..