Android:UI控件(不常用汇总)sldingdrawer下拉界面
1.sldingdrawer下拉界面 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1228581,如需转载请自行联系原作者
委托其实并不是OC中才有,C#中也有,不过彼此的理解方式是不一样的,OC中委托是协议的一种,需要使用@protocol声明,委托一般在iOS开发中页面中传值用的比较多。委托是Cocoa中最简单、最灵活的模式之一,委托其实字面上的意思就是将需要的事情委托给别人做,业务场景可以参考主视图和子视图之间的页面关系,或者是视图层和数据层之间的交互。
委托通过@protocol声明,可以定义方法,引用委托的对象,需要实现其方法,方法默认都是@required的,同时可以设置为可选的@optional,首先定义个委托:
|
1
2
3
4
5
6
7
|
@protocol
BookDelegate <
NSObject
>
@required
- (
void
)getBookCount;
@optional
- (
void
)optionMethod;
@end
|
这个时候定义书籍Book类和客户Customer类:
|
1
2
3
4
5
6
7
8
9
|
@interface
Book :
NSObject
<BookDelegate>
@end
@interface
Customer :
NSObject
<BookDelegate>
@property
(assign,
nonatomic
)
id
<BookDelegate> didBookDelegate;
@end
|
实现其中的getBookCount方法:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@implementation
Book
- (
void
)getBookCount{
NSLog
(@
"Book中getBookCount的实现"
);
}
@end
@implementation
Customer
- (
void
)getBookCount{
NSLog
(@
"Customer中getBookCount的实现"
);
}
@end
|
简单的调用:
|
1
2
3
4
5
6
7
|
Book *book=[[Book alloc]init];
Customer *customer=[[Customer alloc]init];
[customer getBookCount];
[book getBookCount];
|
上面几行的代码的结果,不用说大家也能看的懂,接下来看接下来的代码,这个时候大家发现用到了开始顶一个的didBookDelegate:
|
1
2
3
|
customer.didBookDelegate=book;
[customer.didBookDelegate getBookCount];
|
上面就是将Book的实例,Book实现了BookDelegate,这个时候可将Book的实例赋值给customer中的变量,将自己的实例化对象委托给了didBookDelegate。
以上是委托使用基本的场景,作为实例化对象book可以自己执行其方法,也可以通过委托将执行过程转移。
简单的就是A页面数据可以传值给B页面,B页面可以传值给A页面,简单的两个页面传值,页面参考如下:
都是文本框和按钮,跳转方式选取的时Modal:
第一个页面ViewController的定义:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#import <UIKit/UIKit.h>
#import "SecondViewController.h"
@interface
ViewController : UIViewController<StudySubjectDelegate>
@property
(strong,
nonatomic
)
IBOutlet
NSString
*firstData;
@property
(weak,
nonatomic
)
IBOutlet
UITextField *subjectName;
@end
|
第二个页面SecondViewController头文件的定义,并且声明了一个委托:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//
// SecondViewController.h
// Sample
//
// Created by keso on 15/2/3.
// Copyright (c) 2015年 keso. All rights reserved.
//
#import <UIKit/UIKit.h>
@class
SecondViewController;
@protocol
StudySubjectDelegate <
NSObject
>
- (
void
)shouldChangeValue:(SecondViewController*)controller;
@end
@interface
SecondViewController : UIViewController
@property
(assign,
nonatomic
)
id
<StudySubjectDelegate> firstViewDelegate;
@property
(weak,
nonatomic
)
IBOutlet
NSString
*showData;
@property
(weak,
nonatomic
)
IBOutlet
UITextField *studySubject;
@end
|
ViewController.m中的点击事件:
|
1
2
3
4
5
6
7
8
9
|
- (
void
)prepareForSegue:(UIStoryboardSegue *)segue sender:(
id
)sender{
if
([segue.identifier isEqualToString:@
"firstEdit"
]) {
SecondViewController *controller=segue.destinationViewController;
NSLog
(@
"%@"
,
self
.subjectName.text);
//将自己本身的实例传递给第二个视图
controller.firstViewDelegate=
self
;
controller.showData=
self
.subjectName.text;
}
}
|
赋值的方式还可以是这样的,其实中的key就是第二个视图定义的属性:
|
1
2
3
|
if
([controller respondsToSelector:
@selector
(setShowData:)]) {
[controller setValue:
self
.subjectName.text forKey:@
"showData"
];
}
|
第二个页面的点击事件就比较简单了,代码如下:
|
1
|
[
self
.firstViewDelegate shouldChangeValue:
self
];
|
上面中其实可以简单的看到oc中的委托就是将自己的实例交给其他对象的成员变量,然后由其成员变量执行实例的工作,的今天不知道为什么有点头疼,说个事情就是最后的第二个页面跳转到一个页面可以接收到值,无法给UITextField赋值,暂时没有搞明白如何才能赋值上去,每次进入就变成了null,有知道可以指点一下,多谢~
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4271275.html,如需转载请自行联系原作者
微信关注我们
转载内容版权归作者及来源网站所有!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。
为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。
Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。