View 与 Controller 之间的delegate(代理)传值
这个代理传值是经常使用的一种传值方式,下面介绍一种View 和 Controller 之间的代理传值方法。
先建立一个View视图
如 LoginView 是继承于一个UIView
在LoginView.h里面声明协议
LoginView.h文件
#import <UIKit/UIKit.h>
@class LoginView;
//1.声明协议
@protocol LoginViewDelegate
@optional//可选的
- (void)sureButtonTaped:(LoginView *)loginView info:(NSString *)info;
@end
@interface LoginView : UIView
//2.声明delegate属性
@property (nonatomic,assign) id delegate;
@end
在LoginView.m 有一个textField,一个button,点击button,将textField里面的值传入Controller里面。
LoginView.m文件
import "LoginView.h"
@interface LoginView ()
@property (nonatomic,strong)UITextField *textField;
@property (nonatomic,strong) UIButton *button;
@end
@implementation LoginView
(instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor yellowColor];[self setUp];
}
return self;
}(void)setUp{
_textField = [[UITextField alloc] init];
_textField.bounds = CGRectMake(0, 0, CGRectGetWidth(self.bounds) * 0.7, 40);
_textField.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds) - 100);
_textField.tintColor = [UIColor redColor];
_textField.borderStyle = UITextBorderStyleLine;
_textField.keyboardType = UIKeyboardTypeASCIICapable;
_textField.placeholder = @"请输入文字";
_textField.clearButtonMode = UITextFieldViewModeWhileEditing;
[self addSubview:_textField];_button = [UIButton buttonWithType:UIButtonTypeSystem];
_button.frame = CGRectMake(120, 280, 80, 30);
[_button setTitle:@"登陆" forState:UIControlStateNormal];
[_button addTarget:self action:@selector(buttonTaped:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_button];
}
- (void)buttonTaped:(UIButton *)sender
{
//调用协议方法
[_delegate sureButtonTaped:self info:_textField.text];
}
在这里我们用于接收的视图就用一开始的ViewController,你也可以传入你想要传入的视图
ViewController.h文件
import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
ViewController.m文件
#import "ViewController.h"
#import "LoginView.h"
//引入协议
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
LoginView *login = [[LoginView alloc]initWithFrame:CGRectMake(20, 200, 375-40, 350)];
//1.设置代理
login.delegate = self;
[self.view addSubview:login];
}
#pragma mark -- LoginViewDelegate
//3.实现协议方法
(void)sureButtonTaped:(LoginView *)loginView info:(NSString *)info
{NSLog(@"%@",info);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
总结:代理加方法的传值是一种很好的传值方式,我们可以将自己要传入的值写进方法里面,打包传入,方便快捷。。
View 与 Controller 之间的delegate(代理)传值的更多相关文章
- 【MVC架构】——怎样利用Json在View和Controller之间传递数据
在MVC架构中,尽管非常多东西和三层非常相似,可是也有非常大的差别.就比方传递数据.在三层架构中,传递数据就仅仅要一层返回,另外一层用同样类型的变量来接收即可了.在MVC中,事实上原理是一样的,Con ...
- 【MVC框架】——View和Controller之间的传值
在MVC中,Controller运行一个能够说是路由功能.它通过View传过来的数据,来决定应该调用哪一个Model,相同会把Model处理完的数据传给View,所以就总是涉及到Controller和 ...
- 【ASP.NET MVC】View与Controller之间传递数据
1 概述 本篇文章主要从操作上简要分析Controller<=>View之间相互传值,关于页面之间传值,如果感兴趣,可参考我另外一篇文章ASP.NET 页面之间传值的几种方式 . Co ...
- MVC进阶学习--View和Controller之间的数据传递(二)
1. 使用Request.Form MVC 将页面简单化,与WebForm中的事件机制完全不同,就和普通的html标签表单提交没有任何区别(当然WebForm中的事件机制其实也是表单提交).在表单提交 ...
- spring mvc controller接收请求值及controller之间跳转及传值
spring接收请求参数: 1,使用HttpServletRequest获取 @RequestMapping("/login.do") public String login(Ht ...
- MVC进阶学习--View和Controller之间的数据传递(一)
1.使用ViewData ViewData 的是ControllerBase 的一个属性,是一个数据字典类型的,其实现代码如(这段代码来自asp.net MVC开源项目中源码)下: Code 1 ...
- AngularJS in Action读书笔记2——view和controller的那些事儿
今天我们来818<angularjs in action>的第三章controller和view. 1.Big Picture概览图 View是angularjs编译html后呈现出来的, ...
- view向controller提交列表
第一次将view中列表提交到controller,尝试了下,还是可以的 要传输的实体类 /// <summary> /// 用于展示的角色类 /// </summary> pu ...
- ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller
ASP.NET MVC中的Model(数据模型)主要包括定义数据结构.数据库读写.数据验证等等和对象处理相关的工作. 在解决方案资源管理器中找到Model文件夹,点击右键,添加一个新类,名为“Mess ...
随机推荐
- iOS开发 Xcode8中遇到的问题及改动
iOS开发 Xcode8中遇到的问题及改动 新版本发布总会有很多坑,也会有很多改动. 一个一个填吧... 一.遇到的问题 1.权限以及相关设置 iOS10系统下调用系统相册.相机功能,或者苹果健康 ...
- Markdown精简版个人语法
一.标题用#号 一级标题 二级标题 四级标题 二.分割线用3个 - ,或者3个.多个 * 均可 三.强调用 低调 高调 四.无序排列使用 * 号,或者 + 号,还有 - 号 加号 减号 星号 五.有序 ...
- java IO输入输出流中的各种字节流,字符流类
字节流字节流主要是操作byte类型数据,也byte数组为准,主要操作类就是·字节输出流:OutputStream·字节输入流:InputStream字符流在程序中一个字符等于2个字节,那么java提供 ...
- ExecutorService线程池
ExecutorService 建立多线程的步骤: 1.定义线程类 class Handler implements Runnable{} 2.建立ExecutorService线程池 Executo ...
- asp.net4.5尚未在web服务器上注册 解决方案
以前都是直接用aspnet_regiis.exe -i 现在用这个不好使了,解决办法打微软补丁. https://blogs.msdn.microsoft.com/webdev/2014/11/11/ ...
- iOS 创建一个可以点击并拖拽的Button
HSCButton.h #import <UIKit/UIKit.h> @interface HSCButton : UIButton { CGPoint beginPoint; } @p ...
- XML 基础
linux下xml编辑器 vim gedit editix wonderful;免费30天;可以进行有效性检查 xerces oxygen 收费 xmlcopyedit serna free 是ser ...
- C#和.net的版本
C#1.0:OOP和CTS(delegate)C#2.0:泛型.分部类.静态类.迭代器.匿名方法.委托的协变和逆变.属性访问器可以被单独设置访问级别.可空类型.??操作符C# 3.0:Linq.lam ...
- SQL排序问题
''按多个字段排序 Select * From Job order by job desc,id asc ''按首字符(非数字)排序 )) ) end ''按首字符分组 ) ''合并Order by排 ...
- SQL多表连接查询
SQL多表连接查询 本文主要列举两张和三张表来讲述多表连接查询. 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际 ...