首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pushViewController(UIViewController(),animated: true)在自定义集合视图单元格按钮目标函数中不起作用

pushViewController(UIViewController(), animated: true)在自定义集合视图单元格按钮目标函数中不起作用的原因可能是因为缺少导航控制器或者当前视图控制器不是导航控制器的一部分。pushViewController是导航控制器的方法,用于将新的视图控制器推入导航堆栈并显示新的视图控制器。

解决该问题的方法是确保当前视图控制器是导航控制器的一部分,并且导航控制器已正确初始化。可以通过以下步骤来解决该问题:

  1. 确保当前视图控制器是导航控制器的一部分。可以通过以下代码来检查和获取当前视图控制器的导航控制器:
代码语言:swift
复制
if let navigationController = self.navigationController {
    // 当前视图控制器是导航控制器的一部分
    navigationController.pushViewController(UIViewController(), animated: true)
} else {
    // 当前视图控制器不是导航控制器的一部分
    // 可以尝试使用其他方式进行页面跳转,如presentViewController等
}
  1. 确保导航控制器已正确初始化并与当前视图控制器相关联。可以在当前视图控制器的父视图控制器中进行导航控制器的初始化和设置。以下是一个示例代码:
代码语言:swift
复制
let navigationController = UINavigationController(rootViewController: YourViewController())
self.present(navigationController, animated: true, completion: nil)

在这个示例中,我们创建了一个导航控制器,并将YourViewController作为根视图控制器。然后使用present方法将导航控制器呈现在当前视图控制器上。

总结:

如果pushViewController(UIViewController(), animated: true)在自定义集合视图单元格按钮目标函数中不起作用,可能是因为缺少导航控制器或者当前视图控制器不是导航控制器的一部分。需要确保当前视图控制器是导航控制器的一部分,并且导航控制器已正确初始化并与当前视图控制器相关联。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自学Swift之路(二)UITableView自定义和实际利用

6EDD4AC9-47E3-401F-91A4-2DA836439787.png Demo开始之前,我们想想应该会使用到屏幕宽高等一些常用的值,OC,咱们可以使用PCH然后宏定义,然而在Swift...: true, completion: nil) } } 登录后我们会进入一个表视图,这个表视图单元格是咱们自己定义的 import UIKit class BuildListTableViewCell...coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } 代码自定义单元格加上了一个...ImageView和一个Label,虽然数据是死的,但是Swift,另外一个类是可以直接访问另一个类的变量的(如果没做任何保护的话),所以我们配置cell的时候是可以直接赋值的,这里就不弄了,然后我们看创建表视图那一块...pushViewController(detailVC, animated: true) } @available(iOS 2.0, *) internal

2.3K90
  • UINavigationController 导航控制器概念属性方法

    (iOS7之后,导航右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...(1)压入新的视图控制器 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;...这个方法是为了iOS方法的命名统一,导航,其作用和push一样 - (void)showViewController:(UIViewController *)vc sender:(nullable...继承该父类的控制器调用此方法都可以隐藏push来的控制器底部的TabBar - (void)pushViewController:(UIViewController *)viewController animated...= YES; [super pushViewController:viewController animated:animated]; } (2)弹出一个视图控制器 返回的是pop的controller

    2.1K60

    Cocoa编程中视图控制器与视图类详解

    进度与活动: UIActivityIndicatorView UIProgressView  控制器类 UIViewController类       UIViewController负责创建其管理的视图低内存的时候将它们从内存移除...使用pushViewController: animated:可推入一个新的控制器,从而增加新的项到导航栈。(记住:导航栏控制器不添加一个视图进去,这个导航栏是没有意义的!)...;   [aNav pushViewController:aView animated:NO]; //这里假定是导航栏的第一个视图,所以不要动画化。...实现UITabBarControllerDelegate委托的视图控制器重写init方法来自定义UITabBarItem条目。...代码一是由initWithNibName:方法来加载具体的某个视图控制器并自定义该控制器TabBarItem样式外观等。

    5.1K50

    # iOS导航栏控制Tips

    其他手势的处理 return NO; } 2.统一重写导航栏返回按钮 有时候,我们可能需要统一工程的返回按钮样式,比如都是 箭头+返回 或者都是 箭头。...第一种方案比较简单就不做赘述了,第二种方案是这样的: 自定义导航控制器,然后重写如下方法: - (void)pushViewController:(UIViewController *)viewController...- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { UIBarButtonItem...:viewController animated:animated]; } 3.监听返回按钮的点击事件 在有些场景,我们需要监听返回按钮的事件。...原始堆栈数组判断是否存在该类型的控制器,如果存在记录其索引。 复制的数组中将索引及上方所有控制器移除。 把将要push出来的控制器添加到复制的数组

    1.7K31

    大前端开发的路由管理之四:iOS篇

    iOS,有两类ViewController: 一类用来展示内容,例如UIViewController,UITableViewController 一类用来作为容器,例如UINavigationController...而点击应用上方的NavigationBar返回按钮(如果没有隐藏起来的话)就会pop当前的ViewController,也就是返回上一层。...应用默认的UINavigationController的第一个view controller是根视图控制器,即 root view controller,放在stack的最底层,最新的最高层。...:vc1 animated:NO];   //把vc1推到nav的stack[nav pushViewController:vc2 animated:NO];   //把vc2推到nav的stack...但UIViewController还有一个方法可以自定义这个转场动画: [vc3 transitionFromViewController:vc2                 toViewController

    1.9K40

    iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

    入栈的方式添加自控制器 [nav pushViewController:mainController animated:YES]; 2.4 UINavigationController的子控制器...:(UIViewController *)viewController animated:(BOOL)animated; 2.4.3 出栈 返回到上一个控制器(将栈顶的控制器移除) -(UIViewController...UINavigationController保存子控制起的形式:栈 获取UINavigationController下面的所有的子控制器:viewControllers / childViewControllers 导航条按钮使用原始图片不进行系统渲染...UITabBarButtonUITabBar得位置是均分的,UITabBar的高度为49。 UITabBar的结构⼤大致如下图所示: ?...:c1]; tb.viewControllers=@[c1,c2,c3,c4]; 注意:展示的顺序和添加的顺序一致,和导航控制器不同,展现在眼前的是导航控制器的根视图控制器也就是第一个添加到导航控制器上的视图

    1.3K40

    iOS开发之抽屉效果实现

    (1).终端搜索PPRevealSideViewController的版本 ?     (2).Podfile添加相应的版本库 ?     ...三、使用PPRevealSideViewController来实现抽屉效果     当然了首先在pch文件引入我们的第三方类库,然后使用即可     1.storyboard拖出来我们要用的视图控制器...,点击主界面上的按钮会以抽屉的形式展示出导航页,然后导航页导航到各个界面,之后在从各个页面回到主界面 ?     ...2.AppDelegate初始化我们的PPRevealSideViewController并设置为启动页面代码如下: ? ?...:table onDirection:PPRevealSideDirectionLeft animated:YES]; 6 }     4.导航页点击不同的按钮使用PPRevealSideViewController

    1.9K60

    iOS小技能:自定义导航栏,设置全局导航条外观

    前言 开发需求时app中使用的导航条一个模块的主题基本是一致的,因此可通过自定义导航条来进行统一控制。...设置导航条渐变颜色 设置全局导航条按钮主题 拦截push:通过自定义类,重写自带的方法实现 I、自定义导航栏 1.1 HWNavigationController.h #import <UIKit/UIKit.h...*标题:@property(nonatomic,copy) NSDictionary *titleTextAttributes;// 字典能用到的keyUIStringDrawing.h// 最新版本的...,重写自带的方法实现 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{...:viewController animated:animated]; } #pragma mark - 重写: animated: /** 1)自定义导航控制器的价值 重写push方法就可以拦截所有压入栈的子控制器

    2.4K20

    UINavigationController

    UINavigationController 根据具体情况,通过push方法添加对应个数的子控制器 UINavigationController以栈的形式保存子控制器 使用push方法能将某个控制器压入栈 - (void)pushViewController...:(UIViewController *)viewController animated:(BOOL)animated; //使用pop方法可以移除控制器 //将栈顶的控制器移除 - (UIViewController...*)popViewControllerAnimated:(BOOL)animated; //回到指定的子控制器 - (NSArray *)popToViewController:(UIViewController...:(BOOL)animated; 如何修改导航栏的内容 导航栏的内容由栈顶控制器的navigationItem属性决定 UINavigationItem有以下属性影响着导航栏的内容 //左上角的返回按钮...Segue,才能完成界面跳转 按住Control键,从来源控制器拖线到目标控制器 手动型的Segue需要设置一个标识 恰当的时刻,使用perform方法执行对应的Segue [self performSegueWithIdentifier

    1.4K60

    iOS开发UINavigation系列四——导航控制器UINavigationController

    )animated; //压入新的视图控制器 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated...:(UIViewController *)viewController animated:(BOOL)animated;  //直接pop到根视图控制器,返回所有被pop的controller - (nullable... NSArray *)popToRootViewControllerAnimated:(BOOL)animated; 三、导航控制器的常用方法和属性...//iOS7之后,导航右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable, nonatomic, readonly) UIGestureRecognizer... *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS方法的命名统一,导航,其作用和push一样 - (void)showViewController

    1.8K20

    iOS开发之EventKitUI框架的应用

    :chooser animated:YES]; 需要注意,实例化EKCalendarChooser的时候,需要关联一个EKEventStore对象,用来进行数据操作。...entityType:(EKEntityType)entityType eventStore:(EKEventStore *)eventStore; // 获取用户选中的日历 集合...导航上 @property(nonatomic) BOOL showsDoneButton; // 是否展示取消按钮导航上 @property(nonatomic) BOOL showsCancelButton...nil]; } } } EKEventViewController也支持进行事件的编辑,其中属性方法如下: @interface EKEventViewController : UIViewController...,对于可编辑的EKEventViewController视图控制器,当用户点击的编辑按钮后,也会调用EKEventEditViewController视图控制器进行编辑,示例如下: EKEventEditViewController

    1.1K50
    领券