在子视图中实现调用控制器里面的跳转方法这里介绍三种方法

方法一:在这个自定义的UIVIew设置一个delegate,指向 A,然后在按钮事件使用delegate让A执行方法跳转B

在这个自定义的UIVIew—>B

B所载的界面—>A

在A里面定义一个算法如下:

-(void)changeInterface:(NSString *)interfacename

{

Class class = NSClassFromString(interfacename);

UIViewController *con =[[class alloc] init];

if (con == self)

{

return ;

}

[self.navigationController pushViewController:con animated:YES];

}

在点击事件发生的同时传递一个指针过去,例如:

pop.delegate = self;

在B视图中实现跳转

[_delegate changeInterface:@"ClassifyViewController"];

方法二:也可以发通知给UIViewController A去跳转到B

、、、、这个方法是最不好的也是最初级的

方法三:或者直接通过UIResponder获取view所在的controller中方法如下:

UIView* next = [self superview]

UIResponder *nextResponder = [next nextResponder];

if ([nextResponder isKindOfClass:[UIViewController class]])

{

return (UIViewController *)nextResponder;

}

拿到controller就可以操作咯!

- (id) traverseResponderChainForUIViewController {

id nextResponder = [self nextResponder];

if ([nextResponder isKindOfClass:[UIViewController class]]) {

return nextResponder;

} else if ([nextResponder isKindOfClass:[UIView class]]) {

return [nextResponder traverseResponderChainForUIViewController];

} else {

return nil;

}

}

时间: 2024-08-03 12:42:00

在子视图中实现调用控制器里面的跳转方法这里介绍三种方法的相关文章

【iOS开发每日小笔记(九)】在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法

这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下.其实,90%的作用是帮助自己回顾.记忆.复习. 一直想写一篇关于runloop学习有所得的文章,总是没有很好的例子.正巧自己的上线App Store的小游戏<跑酷好基友>(https://itunes.apple.com/us/app/pao-k

在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法

游戏中有一个计时功能.在1.0版本中,使用了简单的在主线程中调用: 1 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 的方法.但是当每0.01秒进行一次repeat操作时,NSTimer是不准的,严重滞后,而改成0.1秒repeat操作,则这种

android应用中去掉标题栏的三种方法

在android中去掉标题栏有三种方法,它们也有各自的特点. 1.在代码里实现 this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 记住:这句代码要写在setContentView()前面. 2.在清单文件(manifest.xml)里面实现 <application android:icon="@drawable/icon" android:label="@string/app_name" a

YbSoftwareFactory 代码生成插件【二十五】:Razor视图中以全局方式调用后台方法输出页面代码的三种方法

上一篇介绍了 MVC中实现动态自定义路由 的实现,本篇将介绍Razor视图中以全局方式调用后台方法输出页面代码的三种方法. 框架最新的升级实现了一个页面部件功能,其实就是通过后台方法查询数据库内容,把查询结果的 HTML 代码呈现到 Razor 视图中,考虑到灵活性,需要能在任意 Razor 视图中调用该方法,这样任意 Razor 页面都能以统一的方式方便地共享该页面部件的 HTML 内容,这对于代码的重用性和可维护性都是非常有必要的. 为实现上述要求,本文介绍如下可供选择的三种方式.   1.

子窗体中如何调用父窗体里的方法

有两个窗体,一个子窗体,一个父窗体,当点击父窗体中的按钮,弹出子窗体,在子窗体中添加完数据,单击确定按钮后,数据在父窗体的数据显示控件中立即显示,实现其实很简单,同时方法也很多,我是利用了一种最简单的方法. 子窗体SubForm:protected void btnOk_Click(object sender,EventArgs arg){   //插入数据的代码   if(插入数据成功)      this.DialogResult=DialogResult.Ok;} 父窗体:protecte

MVC控制器向View视图传值的三种方法

首先创建一个MVC的项目,其中需要一个控制器(TestController),三个视图(index,edit,detail) 1.项目结构如下: 2.控制器向视图传值的三种方法 1)提供视图模型对象(直接把对象放在View里面) 2)通过VewBag传递数据 3)通过ViewData传递数据 3.控制器源码如下: using System;using System.Collections.Generic;using System.Linq;using System.Web;using Syste

ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

转自:http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html 在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送表单实现的.具体使用中,主要使用以下三种方法. 1.通过Request.Form读取表单数据        2.通过FormCollection读取表单数据        3.直接读取表单数据对象 下边是我学习这些东西时的一点总结 1.通过Request.Form读取表单数据      首先定

Html5 页面中 JavaScript 启动调用的三种方法比较

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 首先,来看一下 Html5 页面引用 JavaScript 代码的几种方式: 1.Html5 页面中使用 <script>  标签容纳

Android开发中完全退出程序的三种方法

参考: http://android.tgbus.com/Android/tutorial/201108/363511.shtml Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里给大家三种比较简单的方法实现. 首先要说明在B中直接使用finish(),接下来手机显示的还是主窗口A,所以一起来看看是如何实现的吧. 1. Dalvik VM的本地方法 android.os.Process.killProcess(andro