- 浏览: 2528615 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
UIAlertTableView.h
#import <UIKit/UIKit.h> @class UIAlertView; @interface UIAlertTableView : UIAlertView { UIAlertView *alertView; UITableView *tableView; int tableHeight; int tableExtHeight; id <UITableViewDataSource> dataSource; id <UITableViewDelegate> tableDelegate; } @property (nonatomic, assign) id dataSource; @property (nonatomic, assign) id tableDelegate; @property (nonatomic, readonly) UITableView *tableView; @property (nonatomic, assign) int tableHeight; - (void)prepare; @end
UIAlertTableView.m
#import "UIAlertTableView.h" #define kTablePadding 8.0f @interface UIAlertView (private) - (void)layoutAnimated:(BOOL)fp; @end @implementation UIAlertTableView @synthesize dataSource; @synthesize tableDelegate; @synthesize tableHeight; @synthesize tableView; - (void)layoutAnimated:(BOOL)fp { [super layoutAnimated:fp]; [self setFrame:CGRectMake(self.frame.origin.x, self.frame.origin.y - tableExtHeight / 2, self.frame.size.width, self.frame.size.height + tableExtHeight)]; UIView *lowestView; int i = 0; while (![[self.subviews objectAtIndex:i] isKindOfClass:[UIControl class]]) { lowestView = [self.subviews objectAtIndex:i]; i++; } CGFloat tableWidth = 262.0f; tableView.frame = CGRectMake(11.0f, lowestView.frame.origin.y + lowestView.frame.size.height + 2 * kTablePadding, tableWidth, tableHeight); for (UIView *v in self.subviews) { if ([v isKindOfClass:[UIControl class]]) { v.frame = CGRectMake(v.frame.origin.x, v.frame.origin.y + tableExtHeight, v.frame.size.width, v.frame.size.height); } } } - (void)show{ [self prepare]; [super show]; } - (void)prepare { if (tableHeight == 0) { tableHeight = 150.0f; } tableExtHeight = tableHeight + 2 * kTablePadding; tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 0.0f, 0.0f) style:UITableViewStylePlain]; tableView.backgroundColor = [UIColor orangeColor]; tableView.delegate = tableDelegate; tableView.dataSource = dataSource; [self insertSubview:tableView atIndex:0]; [self setNeedsLayout]; } - (void)dealloc { [tableView release]; [super dealloc]; } @end
AlertTableViewController.h
#import <UIKit/UIKit.h> @interface AlertTableViewController : UIViewController <UIAlertViewDelegate, UITableViewDelegate, UITableViewDataSource> { UITableView *myTableView; NSArray *array; NSIndexPath *lastIndexPath; } @property (nonatomic, retain) NSIndexPath *lastIndexPath; - (IBAction)btnClick:sender; @end
AlertTableViewController.m
#import "AlertTableViewController.h" #import "UIAlertTableView.h" @implementation AlertTableViewController @synthesize lastIndexPath; - (void)viewDidLoad { array = [[NSArray alloc] initWithObjects:@"test1", @"test2", @"test3", @"test4", nil]; [super viewDidLoad]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [array count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } NSUInteger row = [indexPath row]; NSUInteger oldRow = [lastIndexPath row]; cell.textLabel.text = [array objectAtIndex:row]; cell.accessoryType = (row == oldRow && lastIndexPath != nil) ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; return cell; } - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{ return indexPath; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 40; } - (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { int newRow = [indexPath row]; int oldRow = [lastIndexPath row]; if ((newRow == 0 && oldRow == 0) || (newRow != oldRow)){ UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath]; newCell.accessoryType = UITableViewCellAccessoryCheckmark; UITableViewCell *oldCell = [tableView cellForRowAtIndexPath: lastIndexPath]; oldCell.accessoryType = UITableViewCellAccessoryNone; lastIndexPath = [indexPath retain]; } [tableView deselectRowAtIndexPath:indexPath animated:YES]; } - (IBAction)btnClick:sender { UIAlertTableView *alert = [[UIAlertTableView alloc] initWithTitle:@"Select Option" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Do", nil]; alert.tableDelegate = self; alert.dataSource = self; alert.tableHeight = 120; [alert show]; [alert release]; } - (void)dealloc { [lastIndexPath release]; [array release]; [super dealloc]; } @end
示例图:
发表评论
-
Error watching file for changes: EMFILE
2016-12-15 11:57 1299执行npm start后报错: Error watc ... -
CocoaPods升级1.1.1报错
2016-12-15 08:39 793ERROR: While executing gem .. ... -
Visual Studio Code运行React Native报错
2016-06-13 09:43 1612React Native:0.27.2 React:15 ... -
React Native 0.27.2编译报错this._nativeModule.addListener is not a function
2016-06-12 15:21 3854React Native:0.27.2 React:15 ... -
Unable to resolve module ReactDefaultPerf from
2016-06-02 13:04 2782package.json信息如下: "reac ... -
React Native 0.26.2编译报错Undefined symbols for architecture x86_64
2016-05-26 11:15 2014React Native:0.26.2 React:15. ... -
Failed to update auto layout status: Failed to load designables from path (null)
2016-04-05 22:11 1714确保CocoaPods是0.36.1以上版本,然后在podf ... -
集成微信支付出现Undefined symbols for architecture x86_64错误
2016-03-21 13:22 1751Undefined symbols for architec ... -
React Native热部署之CodePush
2016-01-10 22:27 6240本文使用的环境是Mac OS 10.11.1、Xcode ... -
浅谈React Native中的FlexBox布局
2015-11-17 18:38 4304React Native通过一个基于FlexBox的布局引 ... -
React Native之构建一个简单的列表页
2015-10-23 14:45 2160本文中我们将创建一个简单的电影应用,这个应用将从Rotten ... -
React Native之环境搭建
2015-10-20 16:30 1445本文使用的环境是Mac O ... -
获取图片属性的方法
2015-10-18 20:43 3143很多时候我们需要获 ... -
NSCache的下标用法
2015-09-18 00:19 1213NSCache类和NSDictionary类很相似,也提供 ... -
如何给category添加属性
2015-08-16 10:41 691主要是使用了runtime中的associative机制。 ... -
UITableView的两种重用Cell方法的区别
2015-08-10 13:07 16145UITableView中有两种重用Cell的方法: - ... -
SDImageCache.m报错Unused variable 'fileName'
2015-08-04 21:56 1172GCC手册中的相关解释: unused:This att ... -
Swift调用Objective-C
2015-07-13 23:33 1226Swift调用Objective-C需要一个名为<工程 ... -
使用GCD实现倒计时
2015-07-24 21:47 1084__block int timeout = 60; // ... -
导航栏加分割线的实现
2015-07-01 22:00 1763self.view.backgroundColor = [U ...
相关推荐
虽然在iOS 8之后,`UIAlertController`替代了`UIAlertView`,提供了更现代和灵活的界面,但理解如何将`UITableView`与`UIAlertView`结合,对于理解`UIAlertController`的自定义也是很有帮助的。 总之,`"iPhone的...
刚开始的做法 是 UIAlertView 的基础上addsubview上UITableView,UITableView的大小固定,但是 出现 横屏的时候 UITableView跟UIAlertView的大小不搭配了 ,后来自定义一个UIAlertView的继承类,重写了 ...
这需要自定义`UIAlertView`,因为原生的`UIAlertView`不支持嵌入`UITableView`。我们可以创建一个继承自`UIAlertView`的子类,并在其内部添加一个`UITableView`实例。同时,为了实现列表滚动,还需要实现`...
1. **自定义UIAlertView子类**:扩展UIAlertView,添加一个UITableView或者UICollectionView来展示列表。这样做的好处是可以在保持UIAlertView弹出样式的同时,自由定制列表内容。 2. **使用UIAlertController**:...
本文将深入探讨如何在iOS项目中创建并实现自定义提示框,以替代系统默认的UIAlertView和UIAlertController,提升用户体验。 首先,我们要明白自定义提示框的核心优势在于它可以提供更灵活的设计和交互选项。系统...
1. **自定义对话框类**:由于原生的UIAlertView不支持嵌入UITableView,所以需要创建一个自定义的弹出视图类,继承自UIViewController,并且可以模拟UIAlertView的外观和行为。 2. **添加UITableView**:在自定义的...
然而,原生的UIAlertView并不直接支持添加自定义的列表或TableView。因此,我们需要自定义一个视图来达到这个目的。 要创建一个自定义的下拉AlertView,我们可以利用UIAlertController。UIAlertController提供了更...
在这种情况下,我们可以利用自定义视图来扩展AlertView的功能,使其内嵌一个UITableView,从而创建一个“带tableView的AlertView”。 该“ios-带tableView的AlertView.zip”压缩包包含了一个名为“TableAlertDemo-...
在实际应用中,为了遵循苹果的最新设计指南,开发者通常会使用UIAlertController替代UIAlertView,因为它提供了更多的自定义选项和更好的适配性,尤其是在iPad等大屏幕设备上。 总之,“数据刷新Demo”涵盖了...
在这个“oc最基础操作demo”中,很可能会演示如何创建一个`UITableView`,设置数据源和委托,自定义单元格的显示,并实现用户交互。同时,也会展示如何使用`UIAlertController`来展示警告或获取用户输入。这些基本...
1. `UIAlertController`: 这是iOS 8及更高版本引入的一个类,可以用来替代之前的`UIAlertView`和`UIActionSheet`。`UIAlertController`允许开发者自定义视图控制器的内容、样式和行为,以创建更复杂的警告视图。通过...
在iOS 11的更新中,开发者们遇到了一系列适配问题,其中包括UIScrollView滑动手势的异常、UITableView滑动删除功能的变化以及UIImagePickerViewController取消按钮点击区域的缩小等。本文主要聚焦于一个特定的问题:...
对于UI设计,除了前面提到的UITextField和UIAlertView的自定义,还包括如何处理CALayer动画、取地址、获取编码等。 总而言之,iOS开发是一个多方面、多层次的知识体系。不仅需要掌握基础的编程语言和开发工具的使用...
其他知识点还包括使用UIScrollView进行滚动视图的开发、使用手势识别器、应用UICollectionView进行复杂内容展示、设计UI和增强功能、管理应用设置数据、使用UIAlertView和UIActionSheet进行用户交互、开发定位服务...
- 自定义UI组件:包括如何自定义UINavigationController的返回按钮,如何改变UIAlertView的背景,以及如何创建浮动提示等。 - 高级UI操作:讨论了如何让提示窗口在任何界面都能显示,如何禁止程序运行时自动锁屏,...
这部分会讲解如何使用UIAlertView和UIAlertController来显示提示信息,以及处理用户的响应。 5. **C05 - 表格(Tables)**: UITableView是iOS开发中的重要组成部分,用于展示列表数据。这一章将介绍如何创建表格...
3. **TTTableView**和**TTTableViewController**:这些组件扩展了标准的UITableView,提供了更丰富的表格视图功能,比如自定义的单元格模板、自动加载更多内容、下拉刷新等。 4. **TTPhotoViewer**:这是一个优雅的...