iOS中UIPickerView使用总结 UIPickerView是iOS中的原生选择器控件,使用方便,用法简单,效果漂亮。...forComponent:(NSInteger)component; 获取某一分区某一行的视图 - (void)reloadAllComponents; 重载所有分区 - (void)reloadComponent...)row forComponent:(NSInteger)component; 设置某一行显示的标题 - (NSAttributedString *)pickerView:(UIPickerView *...)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component; 通过属性字符串设置某一行显示的标题...component reusingView:(UIView *)view; 设置某一行显示的view视图 - (void)pickerView:(UIPickerView *)pickerView didSelectRow
二 基类布局 在上一部分说了,基类布局主要是对整体的架构进行布局,我们先看下有哪些内容,包括了背景蒙层视图、弹出视图(包含标题行(又包含取消按钮、确定按钮和标题)、分割线和选择器),在子类中会进行一个整体的布局...alertView; // 标题行顶部视图 @property (nonatomic, strong) UIView *topView; // 左边取消按钮 @property (nonatomic,...而对于弹出视图中的标题行(包含取消按钮、确定按钮和标题)、分割线和选择器的具体布局在这里就不进行展开了,很简单的部分,大家自行看一下代码就OK了。 ...如果直接在蒙层上添加弹出式图作为子视图的话,我们的布局相对会简单很多,这里涉及到一点就是子视图的透明度是和父视图保持一致的,如果直接将弹出视图加载到蒙层遮罩视图上,会导致弹出视图的透明度也为0.3,所以弹出视图不能直接加在蒙层遮罩视图上...下面主要就是说一下如何获取年月这样的数据,主要是用到了NSDateComponents 的直接获取一个月前的信息,然后通过将NSCalendar将NSDateComponents转化为日期Date,最后将
响应者链:由一系列“下一个响应者”组成 其顺序如下: 1.iOS系统在处理事件时,通过UIApplication对象和每个UIWindow对象的sendEvent:方法将事件以消息的形式分发给具体处理此事件的第一响应者...如果第一响应者没有进行处理,第一响应者将事件将处理事件的责任传递给下一个,更高级的对象,即当前responder对象的nextResponder。...3.类似地,视图层次中的每个后续视图如果不处理事件都首先传递给它的视图控制器(如果有的话),然后是它的父视图。 4.最上层的容器视图将事件传递给UIWindow对象。...5.UIWindow对象将事件传递给UIApplication单件对象。 6.如果应用程序找不到能够处理事件的响应者对象,则丢弃该事件。 程序寻找能够处理事件的对象,事件就在响应者链中向上传递。 ?...比如我们要实现点击一个tableView的一行时,呼出一个UIPickerView,并且附加一个用于回收PickerView的toolbar。
通过调用initWithRootViewController:方法可以将特定控制器设置为根。...使用pushViewController: animated:可推入一个新的控制器,从而增加新的项到导航栈。(记住:导航栏控制器不添加一个视图进去,这个导航栏是没有意义的!)...推入时,新的视图控制器从右方滑入屏幕(假定animated:YES)。向左指的Back后退按钮出现,可返回到上一步,且Back按钮用的是上一个视图控制器的标题。 2....)和栏标题(title)、用于显示标题的视图(titleView),以及用于从当前视图向后导航的Back按钮(backBarButtonItem)和隐藏后退按钮(hidesBackButton)。...主要属性 • view: 控制器管理的根视图 • title: 控制器导航栏的标题 • wantsFullScreenLayout: 是否需要全屏显示 • interfaceOrientation: 界面方向
pickView.showsSelectionIndicator = YES; //在iOS 7之后可以自定义选择器视图的背景颜色改变其backgroundColor pickView.backgroundColor...; //获取某一列的行数 NSInteger rowNum = [pickView numberOfRowsInComponent:0]; //获取某一列行的Size CGSize rowSize =...[pickView rowSizeForComponent:0]; //返回第component列,第row行的控件。...*)pickerView { return self.foodsData.count; } // 返回多少行 - (NSInteger)pickerView:(UIPickerView...self.foodsData[component]; return items.count; } #pragma mark UIPickerViewDelegate 代理方法 // 返回每行的标题
行 索引 component 参数 : 列 索引, 由于 只有一列, 因此我们不必关系 该索引, 只需要关心 行 索引即可 */ - (NSString *) pickerView:(UIPickerView...: 选中选项所在的列的索引 component 参数 : 选中选项所在的行的索引 */ - (void) pickerView:(UIPickerView *)pickerView didSelectRow...的值 row 参数 : 行 索引 component 参数 : 列 索引, 由于 只有一列, 因此我们不必关系 该索引, 只需要关心 行 索引即可 */ - (NSString *)...component 参数 : 选中选项所在的行的索引 */ - (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger...NSUInteger randomNum = arc4random() % icons.count; //将随机数设置给 UIPickerView 的 四列 中的每行选项
城市选择器,借助于UIPickerView来实现,第一列为省份,第二列为第一列省份对应的城市或者区,数据放在plist中,plist结构如下图所示,第一层是一个Dictionary,每个省份对应的城市是一个...plist.png 实现步骤 第一步 拖入一个UIPickerView到StoryBoard中,然后设置UIPickerViewDelegate,和UIPickerViewDataSource为当前的控制器...*/ - (NSArray*)provinces { if (_provinces == nil) { //将省份保存到数组中 但是字典保存的是无序的 所以读出来的省份也是无序的...self.cityNames valueForKey:self.selectedProvince]; return self.cities.count; } } /** * 返回每一行显示的文本...*)pickerView { return 2; } /** * 选中某一行后回调 联动的关键 * * @param pickerView * @param row
// 每一次调用就应该返回一个数据 它会自动从第0行开始设置title // 6行 0 1 2 3 4 5 func pickerView(_ pickerView: UIPickerView...直接在 storyboard 中布局,不需要使用数据源方法,但如果需要使用到代理方法,仍然需要在控制器中实现相应的方法。 适用于基本不需要动态修改、布局固定的页面,如个人中心、设置等。...(渲染模型)和新快照以获得差异,最后以设定的动画方式应用这些变化从而刷新界面。...核心知识 NSCollectionLayoutSize 决定了一个元素的大小。表达一个元素的 Size 有三种方法: fractional:表示一个元素相对于他的父视图的比例。...(Item 的父视图是 Group,Group 的父视图是 Section) 。
HUD与吐司 MBProgressHUD - 最多人用的loading。 EBuyCommon - 1.基于MBProgressHUD实现得图形加载提示方式,及其标题方式提醒.2。弹窗。...kxmenu - kxmenu弹出菜单,点击视图上任意位置的按钮,会弹出一个菜单,并且有个小箭头指向点击的按钮,类似气泡视图。弹出的菜单位置会根据按钮的位置来进行调整。...ActionSheetPicker-3.0 - 该项目是此前热门项目ActionSheetPicker的新版本,快速复制了iOS 8上的下拉UIPickerView / ActionSheet功能。...CCActionSheet - CCActionSheet:仿照微信朋友圈自定义actionsheet,一行代码即可使用。...CustomPopOverView - 自定义弹出视图,内容支持传一组菜单标题,也支持自定义view,或者自定义viewController,支持任意按钮触发,会显示在按钮底部,也支持切换按钮的对齐方式
来便捷的创建表单界面,首先,FXForms是通过节点配置的方式来进行表单的创建的,表单中每一个cell都是一个节点,这个节点可以是简单的单节点,也可以是父节点,点击父节点后,会跳转新的视图控制器,父节点中可以进行层层嵌套...UIKIT_EXTERN NSString *const FXFormFieldFooter; //设置是否是内嵌节点 对于父节点或者数组类界定 这个如果设置为@YES 则会在当前界面中展示表单 如果设置为@NO,则会在新的视图控制器中展示...,其节点设置的action方法要在视图控制器中进行实现。.../其中有属性为子节点 @property(nonatomic,strong)SubForm * subForm; @end @implementation MyForm @end 子节点会被默认包装在新的视图控制器中...四、关于自定义视图控制器 如果开发者的视图控制器并不是继承于FXFormViewController,也可以使用FXForms来快捷的创建表单视图,开发者自定义的视图控制器需要遵守FXFormControllerDelegate
视图控制器(View Controllers) 视图控制器是MVC(Modl-View-Controller)模式的逻辑部分。按照字面意思,这个控制器能够控制某个视图。...UIViewController视图属性被连接到一个视图文件,大多数情况下,是一个storyboard文件。...通过self.title属性来设置导航栏的标题。...滚动视图中的每一行叫做cell,cell是用了展示table view中每行的内容。table view可以有很多个cell,多个cell组成section(组)。...一个新的scene会增加到Storyboard中,一个scene表示App一屏或者一个界面。
回到storyboard然后选中Table View Controller(确保你选的是实际的视图控制器而不是它里面的某一个视图).在Identity inspector里,设置它的Class是PlayersViewController...: 1.dequeueReusableCellWithIdentifier将会使用重用标识符PlayerCell,重用已经存在的cell如果不存在就创建一个新的. 2.你查找每一行对应的Player对象...所有的变量都是IBOutlet类型的,它可以连接到当前storyboard中的控制器. 使用IBOutlet就好像下面这样添加属性: var player: Player!...这就意味着,在任何给定的时间都有超过一个实例.如果你是将一个标签从cell连接到控制器,那么几个标签的副本将会尝试使用相同的连线.这只是要求麻烦....(在另一方面,将原型cell的活动连接到视图控制器上的动作是非常好的.如果在你的cell上有自定义的按钮或者其他控件,你将会这么做的) ---- 现在你已经连接了这些属性,你可以简化数据源代码.在PlayersViewController
由于在MVC体系结构中,视图与逻辑分离,所以你将无法使用WebReport的可视化组件。我将不得不使用控制器代码中的报表,然后将其转移到视图。例如,在这里我使用了一个标准的MVC Web应用程序。...首先,我们将必要的库连接到项目中: · FastReport.dll; · FastReport.Web.dll。 你可以在FastReport.Net应用程序的文件夹中找到它们。...在第一行中,我们创建了一个WebReport类的实例。 接下来,创建一个变量来存储包含报表的文件夹的路径。对于该报表所需的数据,我们创建一个数据集并加载xml数据库。...ViewBag是对象ViewData的一个封装,用于将数据从控制器传输到视图。在这种情况下,我们会将报表传送到视图索引,本质上来讲就是主页。 我们转到演示: ?...网页代码是: @{ ViewBag.Title = "Home Page"; } @ViewBag.WebReport.GetHtml() 我删除了不必要的,留下了一个页面标题,而我们的报表,以HTML
状态栏: 是透明的 始终固定在整个屏幕的上边缘 API注释 你可以将全应用的状态栏风格设计成统一的,或者给不同的视图控制器定义不同的状态栏风格。...当用户到达一个新的层级,导航栏需要做出这样的改变: 导航栏标题应该变成当前层级的标题。 当前标题左侧放置应有返回按钮,需要的话,返回按钮可以以前一层级的标题命名。 使用当前视图的标题作为导航栏标题。...若觉得标题冗余,你也可以将标题留空。举个例子,备忘录的导航栏中就没有当前备忘录的标题,因为备忘录的第一行就已经提供了所有用户需要的内容。 ? 考虑在应用最高层级的导航栏中放置一个分段控件。...当选中某行将展开另外一屏内容的时候,该行会短暂地高亮,然后新一屏内容滑入。当用户回到前一屏时,之前选中的那一行同样会短暂地高亮,提醒用户他们先前选中了什么(但并不会一直保持高亮)。...Value 2 (UITableViewCellStyleValue2).Value 2样式蓝色字体标题右对齐,黑色字体的副标题左对齐,混排在同一行中。这种样式通常不包含图片。
1.MVC中的控制器 AngularJS的控制器主要为了把模型和视图连接在一起。大多数业务逻辑操作都会放在视图对应的控制器中。...当一个控制器通过ng-controller指令连接到DOM上,Angular将实例化一个新的控制器对象,然后调用指定的控制器的构造函数。...一个新的子作用范围(scope)将被创建,并作为一种可注入的参数传递给控制器的构造函数为$scope。...如果控制器使用controller as语法附加到DOM上,那么控制器实例将被分配给新的$scope范围。并且多了一个和as同名的属性,然后把自己指向这个属性,就方便我们访问了。...但是子级作用域和父级作用域中有相同的属性,子级使用自己的作用域。这个时候子级作用域要访问父级作用域的属性可以通过$parent。类似JavaScript本身的原型链方式。
在 iOS开发之城市选择器一文中用两列的UIPickerView实现了城市选择器,今天用两个UITableView来实现一下,首先这种联动在很多地方用得上,而且方法有好几种,我这里选择了个人喜欢的一种方式...这种方式总体思路如下: 1、添加两个UITableView到当前控制器中,分别设置它们的的尺寸,然后拖线到控制器中 2、左边的表格设置数据源和代理为当前控制器,然后显示数据,右边的表格也设置数据源为当前控制器...3、监听左边表格控制器的点击事件,在它的点击事件中刷新右边的表格 这时候就有问题了,一个控制器要成为2个UITableView的数据源和代理,怎么办?...*/ - (NSArray*)provinces { if (_provinces == nil) { //将省份保存到数组中 但是字典保存的是无序的 所以读出来的省份也是无序的...if (self.leftTableView == tableView) { return self.provinces.count; } //右边的要根据选中的行来设置
另一类是在app内,稍用力按压某个视图,可以预览除去该视图额外的内容,再稍加用力按压屏幕,可以弹出另一个控制器界面,这个控制器界面就是点击这个被按压的视图将会跳转的控制器。...这是快捷操作项的标题。如果标题能够自适应一行,那么系统就以一行的方式显示这个快速启动项。...如果这个标题太长导致一行根本容不下且我们没有指定UIApplicationShortcutItemSubtitle(快速启动项的子标题),那么系统就以两行的方式展示这个快速启动项的标题。...如果我们为一个快捷操作项指定了子标题,那么系统就会以一行的形式显示子标题(也许仅仅是标题的一部分,后面跟着省略号)无论标题有多长。...*作用:返回一个配置好的以供预览的视图控制器。 *需要的操作:把源视图坐标系上的点转换为当前控制器的视图上的点。 *返回一个控制器。
阅读强大的第三方源码/拥有快速上手新的第三方库的能力....TZImagePickerController Hyphenate_CN 基础UI控件 UILabel 标题栏 UIButton 按钮 UIImageView 图片视图 UITextField...UIAlertView(iOS8废除) 警告框 UIActionSheet(iOS8废除) 操作表单 UIAlertController(iOS8出现) 警告视图控制器 UIScrollView 滚动视图...选择按钮 UIPickerView选择器 UIDatePicker日期选择器 UIToolbar工具栏 UINavigationBar通知栏 UINavigationController通知视图控制器...响应链 异常捕捉 国际化 代码模块化 类别/扩展 ---- 中级知识点 设计模式 UIScrollView/UITableView/UICollectionView 的嵌套 动态行高 通知/代理/block
创建一个不包含混合值的新列。 字段类型 连接到新数据源时,Tableau 会将该数据源中的每个字段分配给“数据”窗格的“维度”区域或“度量”区域,具体情况视字段包含的数据类型而定。...当您单击并将字段从“维度”区域拖到“行”或“列”时,Tableau 将创建列或行标题。 从“维度”区域拖出的任何字段在添加到视图时一开始为离散,带有蓝色背景。...现在,视图将包含一个连续轴(而不是列或行标题),并且字段的背景将变为绿色: 如果要将维度设为连续(在未首先将其转换为度量的情况下),则您的选项有限。...这些字段都是连续的,因此 Tableau 将沿视图的底部和左侧显示轴(而不是列或行标题)。...将创建列或行标题。
因为单字标题很少会提供有用的信息,所以可以考虑以问问题或使用短句的方式,尽可能的将标题保留在同一行上。通过大小写及标点符号来共同完成文本语句,而且需要注意不要在句子中间使用结束标点符号。...页面视图控制器可以使用滚动或页面卷曲两种样式的任意一种完成页面之间的转场过渡。 ? 如果需要,可以自定义一种非线性的导航方法。使用页面视图控制器时,页面只能按顺序跳转,而跨页面之间是无法跳转的。...相反,将内容添加到表的开头或结尾,让用户在准备好时滚动到它。一些APP在加载新数据时会显示一个加载器,并提供一个直接跳转到该数据的控件。最好还包括一个刷新控件,这样用户就可以随时手动进行更新。...子标题模式:同一行中,包含左对齐标题和标题下面的左对齐文本。这种样式适用于视觉上相似的列表。而加上子标题有利于区分行与行。 ? 右侧子标题:左对齐标题,右对齐子标题,位于同一行。...然后,用户还会期待出现新的视图或者要改变的东西,例如已勾选按钮,是表示用户已经做出了选择。 为非标准表行设计自定义表格单元格样式。
领取专属 10元无门槛券
手把手带您无忧上云