如何停止标签栏的第二次点击弹出到导航控制器? [复制]

2023-11-29

我有一个基于标签栏的应用程序。所有选项卡都有一个导航控制器作为根。 如果用户再次点击该选项卡(如果该选项卡处于活动状态),它将弹回到导航控制器。

我怎样才能阻止这种行为?

所以事实上我有一个导航控制器+一个隐藏的viewcontroller做出一些决定+另一个视图控制器。对于原始问题中的误导性信息表示歉意。我用的是隐藏的viewcontroller对于所有选项卡,其中 3 个,因为如果用户未登录,我在所有 3 个选项卡上都有登录屏幕。如果用户登录,那么我会弹出登录屏幕,然后将1,2,3个人viewcontrollers在每个选项卡上。

第一次点击:

 0 : class=Crossing: 0x645c8a0>  
 1 : class=FavoritesViewController: 0x64ac140>  
 shouldSelectViewController : UINavigationController  
 UINavigationController topclass:FavoritesViewController  
 myTabBarController.selectedViewController :UINavigationController  
 did disappear  
 didSelectViewController : UINavigationController  
 UINavigationController topclass:FavoritesViewController  

第二次点击:

 0 : class=Crossing: 0x645c8a0>  
 1 : class=FavoritesViewController: 0x64ac140>  
 shouldSelectViewController : UINavigationController  
 UINavigationController topclass:FavoritesViewController  
 myTabBarController.selectedViewController :UINavigationController  
 didSelectViewController : UINavigationController  
 UINavigationController topclass:Crossing  

@MarkGranoff 这样做是正确的,但这样做的方法是这样做:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    if ([tabBarController.viewControllers indexOfObject:viewController] == tabBarController.selectedIndex)
    {
        return NO;
    }
    else
    {
        return YES;
    }
}

或者以更简洁的方式:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    return (viewController != tabBarController.selectedViewController);
}

如果您只想阻止某个选项卡的默认行为,那么您可以执行以下操作:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    NSUInteger indexOfNewViewController = [tabBarController.viewControllers indexOfObject:viewController];
    // Only the second tab shouldn't pop home 
    return ((indexOfNewViewController != 1) ||
            (indexOfNewViewController != tabBarController.selectedIndex));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何停止标签栏的第二次点击弹出到导航控制器? [复制] 的相关文章

  • AVCaptureSession 具有多个方向问题

    我正在尝试实现条形码扫描仪 我有一个 AVCaptureSession 它从 AVCaptureDevice 接收视频 我想支持所有方向 使用以下代码 当我运行应用程序时 纵向一切正常 然而 在横向方向上 视图会旋转 但视频输入不会旋转 所
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • iPhone UINavigationBar 使用 [UINavigationBar 外观] 更改所有控制器的字体样式

    我知道我可以单独更改导航栏的字体 如本答案所述 更改导航栏的字体 https stackoverflow com questions 5832036 change the navigation bars font 目前我正在使用一种更全局的
  • 关于窗口层次结构的警告

    我的调试器中出现这样的警告 这是什么意思 Warning Attempt to present
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 水平分隔符导航栏 IOS 7

    我已经包含了对导航栏 navigationController 的需求 其与栏视图控制器的背景色调相同 现在我有一个问题 在导航栏和视图之间我有一条水平线将它们分开 就像你一样从图片中可以看到 你能告诉我如何删除这条水平黑色线并使其更加一致
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • iPhone 和加密库

    我想我必须在我的 iPhone 应用程序中使用加密库 我想问你有关苹果公司实施的加密货币出口政策的影响 我需要做一些额外的事情吗 例如填写表格等 1 如果我使用 MD5 进行哈希处理 2 如果我使用对称加密 Thanks EDIT 2009
  • 我如何获取用户的电子邮件? iPhone SDK

    我需要获取 Mail app 中使用的用户的电子邮件地址 如何使用 iPhone SDK 做到这一点 谢谢你 简短的回答 你不能 如果需要 您应该提示用户输入电子邮件地址
  • 如何检查 BOOL 是否为空?

    有没有办法在将值分配给 BOOL 之前检查该值是否为 NULL Nil 例如 我在 NSDictionary 中有一个值可以是 TRUE FALSE NULL mySTUser current user following results
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • iPhone 允许光传感器作为输入吗?

    我只是想知道 iPhone 的开发是否允许使用光传感器 作为按钮或动作元素 我在网上找到了这个链接 可以使用光传感器作为按钮吗 存档 Touch Arcade 如果有人能阐明这个问题 我将不胜感激 Apple 代表的官方答复位于苹果开发者论
  • iphone:在 UIWebView 之上查看?

    我正在开发一个浏览器应用程序 并且 UIWebView 顶部有一个地址栏 在 MobileSafari 上 如果向下滚动 地址栏开始移动到顶部 移出屏幕 并且 UIWebView 不会滚动 只有当地址栏完全消失时 它才开始滚动 我也想在我的
  • 如何适配iPhone 4屏幕分辨率?

    根据Apple http www apple com iphone specs html iPhone 4 拥有新的 更好的屏幕分辨率 3 5 英寸 对角线 宽屏多点触控显示屏960 x 640 像素分辨率 326 ppi 这个小细节对我们
  • 是什么导致了这个 iPhone 崩溃日志?

    我有点卡住了 需要解决这个问题 因为我的一个应用程序出现了随机崩溃 而这些崩溃并不总是能够重现 这是崩溃日志之一 Incident Identifier 59865612 9F00 44EA 9474 2BF607AD662E CrashR
  • 禁用一个 UITabbar 项目的旋转

    我有一个 uitabbarcontroller 有 4 个选项卡栏项目 每个选项卡栏项目都有一个 uinavigationcontroller 我需要将一个 uitabbar 项目的方向锁定为仅纵向 所以我实现了以下代码 创建一个自定义标签
  • Objective Flickr 照片上传错误

    我正在使用 ObjectiveFlickr 库将照片从我的 iPhone 应用程序上传到 Flickr 我可以授权该应用程序并执行一般请求 但在尝试上传照片时遇到错误 要上传的照片是使用 AVFoundation 捕获的图像 这是相关代码
  • 您将如何实现一个检测水平滑动以允许分页的 UITableView?

    我想实现一个 UITableView 一次显示 20 行 但考虑到我实际上可能要展示 120 个项目 我想使用某种分页来处理这个问题 使用前 20 项填充表 当用户从右向左滑动时 用接下来的 20 个项目重新加载 UITableView 从
  • iPhone Developer' 与任何有效的、未过期的证书/私钥对不匹配 - 但我正在创建 iPad 应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 代码签名错误 身份 iPhone Developer 与默认钥匙串中的任何有效证书 私钥对不匹配 https stackoverflow com questions 2108503 code sign
  • 将 iPhone 上的 stderr 写入文件和控制台

    我正在遵循答案中的建议here https stackoverflow com questions 5179108 iphone how to read application logs from device用于将 iOS 设备上的 NS

随机推荐

  • 基于另一个选择框更新一个选择框 (Ruby on Rails)

    我是 Ruby on Rails 的新手 需要一些帮助 我正在开发一个可用于跟踪汽车的网络应用程序 有两种模型 一种代表品牌 萨博 本田 丰田等 另一种代表型号 思域 Miata PT Cruiser 等 他们有一个 has many 关系
  • Java 未绑定通配符泛型

    在中使用通配符类型泛型有什么优点吗 Bar课结束后完全跳过它们 public class Foo
  • 如何从groovy返回值到java

    我有一个 jsp 页面绑定到一个运行 groovy 脚本的 servlet 我可以从 servlet 获取 groovy 脚本 但是脚本运行后如何将groovy脚本的响应返回到servlet以显示在jsp页面中 我的java servlet
  • 如果用户未使用 Laravel 5.4 登录,则限制对页面的访问

    我创建了一个仪表板页面 我希望仅当用户登录时才能访问它 登录和注册是通过php artisan make auth命令 有什么技巧或想法可以实现这一点吗 只需将 Auth 中间件添加到您的路由中即可 Route get dashboard
  • C# Windows 应用商店应用程序为 UsbDevice 返回 null

    作为 Windows 应用商店应用程序开发的新手 我正在开发一个必须连接到多个 USB 设备的应用程序 我正在使用 VS 2013 社区 和 C 例如 使用以下方法获取附加网络摄像头的列表 var devices await DeviceI
  • has_many :通过 Rails 中的 has_and_belongs_to_many

    在 Rails 中 使用 has many through 和 has and belongs to many 的效果是什么 考虑有两个模型 帖子和标签 它们具有多对多关系 如下所示 class Tag lt ActiveRecord Ba
  • C 结构体到 Rust 的错误映射

    出于教育目的 我尝试访问FILERust 中的结构 unsafe let passwd libc fopen etc passwd to ptr r as libc c char let fp mut passwd as mut MY FI
  • Java:如何停止线程? [复制]

    这个问题在这里已经有答案了 有什么办法可以从线程外部停止另一个线程吗 例如 如果我运行一个线程来运行该线程并导致该线程停止 它会停止另一个线程吗 有没有办法从内部停止线程而不循环 例如 如果您理想地下载 您会想要使用循环 如果我使用循环 我
  • Swift UnsafeMutablePointer:我必须在解除分配之前调用 deinitialize 吗?

    给定一个实例UnsafeMutablePointer 调用有什么意义deinitialize count 就在之前deallocate capacity 你就不能打电话吗deallocate capacity 我在阅读文章的 使用类型指针
  • 如何将 Write-Output 传输到 Export-Csv?

    我有以下 ping 脚本 我想在其中使用数组以及Export Csvcmdlet 将输出写入 CSV 文件而不是 txt 文件 我第一次尝试管道Write Output to Export Csv直到读到您无法通过管道将字符串传递到Expo
  • SSIS Excel 到 SQL 导入——文件的前 6 行包含标题相关信息

    我正在努力将数千行 120K 数据从 Excel 文件导入到 SQL Server 中 现在我尝试使用 SSIS 来完成此任务 但考虑到构建 excel 文件所用的 excel 模板似乎不包含标题 我立即遇到了一些问题 大约前 6 行包含标
  • Selenium:FirefoxProfile 失败,未发现异常

    我有以下代码 尽管我设置了profile directoryFirefox Webdriver 仍尝试将设置存储在 tmp folder profile FirefoxProfile profile directory home sulta
  • Android 使用服务内的 AlarmManager 定期更新 GPS 位置

    我在这里读了很多问题 但无法弄清楚问题是什么 我正在为 Android 编写一个现场服务应用程序 在其中一项活动 MyActivity java 中 我有两个按钮 开始和停止 当现场工作人员按下开始按钮时 我需要通过 GPS 获取他当前的位
  • PHP echo 有长度限制吗?

    我有这个脚本从 mysql 获取一些数据 然后使用 echo 输出它 但是 随着页面突然变长 我出现了这种奇怪的行为 它在 65535 chrs 处切断了末尾 当使用 strlen 检查时 数据全部保存在MySQL中 超出了使用echo时显
  • 我的游戏的控件在第一次按下 int 16h / ah=1 按键后冻结

    我正在用程序集 8086 编写游戏 我修复了游戏无法打开的问题 但无法修复控件 The ESC key works When I press it it goes to QUIT function but if any other key
  • 在Java中读取XLSX文件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要在 Java 应用程序中读取 Excel 2007 XLSX 文件 有谁知道有一个好的 API 可以完成这个任务吗 阿帕奇兴趣点3 5 添加了
  • 在确认对话框之前,在 ColorDialog 仍然打开时获取颜色属性?

    我想要做的是 当打开 ColorDialog 时 在 Colordialog 的 完全打开 模式下获取临时选定的颜色 例如 在此图像中 我有一个白色的图片框 并且打开一个颜色对话框并选择 红色 颜色 我想要的是将图片框背景色更改为所选颜色
  • 如何在 Angular JS 中对值进行分组和显示

    我创建了一个像这样的作用域函数 scope sample SUPNAME AAA SUPCODE 22671 SLIPNO 18384 DESG 1 iv 1 SUPNAME AAA SUPCODE 22671 SLIPNO 18384 D
  • c# 如何只更新 richtextbox 中的一行文本?

    如何只更新 RichTextBox 中的一行文本 String lines richTextBox8 Lines lines 2 richTextBox8 Lines lines 我正在使用此代码部分来更新 richtextbox 的第二行
  • 如何停止标签栏的第二次点击弹出到导航控制器? [复制]

    这个问题在这里已经有答案了 我有一个基于标签栏的应用程序 所有选项卡都有一个导航控制器作为根 如果用户再次点击该选项卡 如果该选项卡处于活动状态 它将弹回到导航控制器 我怎样才能阻止这种行为 所以事实上我有一个导航控制器 一个隐藏的view