导航栈逻辑上的错误与单例方法

今天犯了一个逻辑上的错误,点击一个列表控制器进入内容控制器(内容控制器是用alloc方式创建的,然后自定义了一个视图,添加到该内容控制器上,在自定义视图上添加了一个按钮,点击按钮的处理时间是从内容控制器进入另一个控制器界面,因为按钮是在视图类中定义的,故需在视图类的按钮点击事件的处理函数中创建内容控制器类(用alloc方式创建的),然后调用内容控制器类的方法(该方法的核心代码为:[self.navigationControllerpushViewController:apply animated:YES]; apply为要进入的控制器对象)。但是在点击按钮后无法进入apply控制器对象,why????

请教同事后终于明白,这里犯了严重的逻辑上的的错误!!首先自定义视图已经位于内容控制器上,然后再在视图类中的按钮点击事件的处理函数中创建内容控制器类对象A,则A对象跟正在显示的内容控制器类对象并不是一个对象,则apply对象并没有进入正在显示的内容控制器的导航栈中,故点击按钮不会进入apply对象的控制器中。

解决办法:

可为内容控制器类添加一个单例的类方法,每次在需要创建内容控制器类对象时,都调用该单例类方法,保持只有一个控制器类对象,这样apply对象进入的就是正在显示的内容控制器类对象的导航栈(因为只有一个内容控制器类)。

后来验证这样也不能解决问题,这样在点击列表控制器进入内容控制器时,也是调用该单例类方法,当已经创建了内容控制器再点击列表控制器进入内容控制器时,内容控制器类不会再执行初始化方法(初始化方法执行一些内容信息的加载工作),这样内容控制器中的信息得不到更新还是以前的信息。

后来只好将按钮填在了内容控制器的导航条上。

如果还是用上面的方法,在点击列表控制器进入内容控制器时,用alloc 创建内容控制器类,而在视图类点击按钮的处理方法中用单例的类方法来得到内容控制器类。这样做行不行呢???我考虑着行,但没试验,不知道有没有什么没想到的地方??

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值