随笔分类 - IOS开发
摘要:相关文章:iOS 6编程(14)-自动布局(Auto Layout)简介创建自动布局(Auto Layout)简单应用在深入研究Interface Builder的自动布局特性之前,我们先创建一个简单的App,演示自动布局的基本概念。使用Xcode的Single View Application模板创建一个项目,项目名称为AutoLayout,类前缀也设置为AutoLayout,选择Storyboard和Automatic Reference Counting选项。在Interface Builder中启动和禁用自动布局功能默认情况下,针对Storyboard和单独的NIB文件都会启用自动布.
阅读全文
摘要:iOS 6 在应用程序用户界面开发中,引入了自动布局(Auto Layout)概念。自动布局使用约束(Constraint)在用户界面描述各类视图的位置、行为和关系。在Xcode 4.5中,我们可以使用Interface Builder,或者可视化格式语言(Visual Format Language),或者标准的SDK API调用(NSLayoutConstraint类)等等三种方式来创建约束(Constraint)。Auto Layout用这些Constraints 来对所有的视图进行一些计算,设置视图的位置和尺寸。不再需要设置视图的frame属性,也就是完全基于针对视图或元素所设置的C.
阅读全文
摘要:删除数据记录当从UITableView中删除一行记录时,将调用commitEditingStyle方法。- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{if (editingStyle == UITableViewCellEditingStyleDelete) {// Get the object to delete from the arrayNo.
阅读全文
摘要:查询结果集结果集的查询,需要用到SQL Statement对象。Statement对象表示一条SQL语句,可以理解为prepared statement或者compiled statement。一般使用sqlite3_prepare_v2() 函数创建Statement对象。头文件中定义了2个成员变量:sqlite3 *noteDB;NSString *databasePath;示例代码如下所示:- (void) initializeDataToDisplay{self.noteArray = [[NSMutableArray alloc] init];const char *dbpath .
阅读全文
摘要:向表中插入记录向数据表Notebook中添加一条新的记事日志,成功插入记录后,会显示一个提醒视图。- (IBAction)addNote:(id)sender {char *errMsg;const char *dbpath = [databasePath UTF8String];if(sqlite3_open(dbpath, ¬eDB) == SQLITE_OK){NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO Notebook(Whattime, Address, What, Who, N
阅读全文
摘要:在使用SQLite API函数如有疑问,可以参考官方函数文档:http://www.sqlite.org/c3ref/funclist.html操作SQLite数据库SQLite数据库是文件数据库,是保存在文件系统中的。因此需要知道文件保存到哪里,下面的代码中,我们将Notebook.sqlite数据库存放在Documents目录下。其中涉及到SQLite数据库的创建、打开、创建数据表和关闭数据库等等操作。NSString *docsDir;NSArray *dirPaths;// 获取 documents 目录dirPaths = NSSearchPathForDirectoriesInD.
阅读全文
摘要:将照片库和App集成,可直接访问存储在iPhone、iPad 中的任何图像或拍摄新照片,并在App 中使用。1. 为了使用 UIImagePickerController,需要将类声明为遵守2个协议:UIImagePickerControllerDelegate和UINavigationControllerDelegate。@interface NoteViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate>2. 显示图像选择器下面是点击设置按
阅读全文
摘要:示例代码如下所示,调用NSMutableArray 对象的addObject方法,但是 count 方法总是返回 0,什么原因呢?for (MyObject *obj in self.Array){[self.noteArray addObject:obj];NSLog(@"Num items: %d", [self.noteArray count]);}这里,self.noteArray 是NSMutableArray 对象,[self.noteArray count] 总是输出0。出现上述问题的原因是:self.noteArray 没有初始化,仍然为nil,所以 cou
阅读全文
摘要:Automatic Property Synthesize 特性这个指的是在Xcode 4.5 编写代码时,在.h 头文件中定义了 @property 属性,之前还必须要在 .m 文件中编写 @synthesize 编译指令(自动生成getter、setter方法)。现在这个不需要做了。当然如果你乐意写@synthesize 代码,Xcode 也支持。
阅读全文
摘要:SQLite是一种轻量级嵌入式数据库,支持大部分标准SQL语法,非常适合做小型应用和作为临时数据存储工具。SQLite Manager – Firefox插件,完全能达到管理SQLite数据库的目的,类似于SQL Server的企业管理器,包括创建数据库,创建表,管理索引等,是一个很好的SQLite前端管理工具。SQLite Manager – Firefox 插件,点击Add to Firefox 按钮,就可以安装了。安装过程中,需要重启Firefox。安装完成之后,在Firefox的Tools 菜单下,可以看到SQLite Manager 菜单项。
阅读全文
摘要:在iOS SQLite App开发中,我们需要使用SQLite类库,在引用过程中,到底应该选择libsqlite3.0.dylib和libsqlite3.dylib哪一个呢?libsqlite3.0.dylib 是一个指向 libsqlite3.dylib 的连接,也就是目前而言,这两个library是完全一样的。网上有一些英文文章说,libsqlite3.dylib 是指向 libsqlite.3.0.dylib的连接,其实从上图可以明显看出,实际情况相反,libsqlite3.0.dylib 是连接文件,而原身是 libsqlite3.dylib文件。
阅读全文
摘要:iOS 6 提供了2个用来创建Core Data应用程序的模板。前面教程,我们选择了Single View Application模板,在App开发过程中编写了很多代码。如果使用现有的支持Core Data模板,则省事很多。Utility Application 模板 – 提供了一个主视图和一个交替视图,可以包含Core Data 功能,并生成所有的代码和配置。Master-Detail View Application 模板 – 生成包含导航视图控制器、表视图和详细视图控制器的应用程序,可以用来显示来自Core Data持久化存储数据库的数据。我们选择是一个Utility Applicat.
阅读全文
摘要:本教程内容篇幅比较长!Core Data 属于 iOS App开发的进阶内容了。运行ShoppingCart应用程序代码编写好了,我们运行App测试一下。因为UI 视图界面并没有进行任何编码,因此没有什么变化,重点是Xcode调试器控制台的输出内容。NSLog语句的输出就显示在这里的。这些输出内容,刚好符合我们的预期。Customer 实体中只有一条记录,购物车编号:100,而且购物车添加了2个具体的商品。检查 SQLite数据库前面我们说过,SQLite数据库文件存放在App的Document目录下,数据库文件名为ShoppingCart.sqlite,怎么找到它呢?使用Finder 切换.
阅读全文
摘要:编写Core Data代码在前面创建Data Model的过程中,我们已经创建3个被管理对象(NSManagedObject),也就是实体对象。这里,我们创建其他Data Core框架中的对象,启用Core Data数据持久化存储功能。打开项目中的CartAppDelegate.h文件,添加NSManagedObjectContext属性和2个方法的原型定义。更新后的代码如下所示:#import <UIKit/UIKit.h>@interface CartAppDelegate : UIResponder@property (strong, nonatomic) UIWindow
阅读全文
摘要:本节内容篇幅比较长!Core Data 属于 iOS App开发的进阶内容了。下面先使用Core Data实现一个简单的范例ShoppingCart。本范例App不利用框架自动生成代码,完全自己编写所有的 Core data 相关代码,来深入理解 Core Data框架中主要类的使用。使用Xcode的Single View Application模板,创建ShoppingCart项目,类前缀为Cart,如下图所示。添加CoreData Framework框架在ShoppingCart项目创建完成之后,我们需要添加CoreData Framework框架到项目中。详细操作步骤,可以参考-开发定.
阅读全文
摘要:Core Data是iOS编程中使用持久化数据存储的一种方式。在以前的教程 – 读写应用程序的设置数据,我们已经提供了三种方式来实现App数据的存储,分别为:(1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video播放记录,或者App退出之后,下次进入时,希望恢复到退出时的情况。(2) 设置束(Settings Bundle)– 提供了一个通过iPhone、iPad的设置(Settings)应用程序进行配置的接口。(3) 直接访问文件系统 – 读写属于当前App的iOS 文件系统部分的文件。在一些情况下,我们可以考试使用Core Data来持久化数据。需要知道的是,C.
阅读全文
摘要:异常信息:Terminating app due to uncaught exception ‘NSInvalidUnarchiveOperationException’, reason: ‘Could not instantiate class named NSLayoutConstraint‘具体场景:Xcode 4.5 选择iPhone、iPad 5.0/5.1 Simulator(模拟器)解决办法:需要关闭storyboard或xib界面文件的Use Auto Layout 选项,这是因为Auto Layout特性是iOS 6 新增加的,在之前的 5.0/5.1 Simulator模.
阅读全文
摘要:分割视图控制器(UISplitViewController)仅适用于iPad,可以在一个iPad屏幕中显示2个不同的场景。在横向模式下,屏幕左边的三分之一为主视图控制器的场景,而右边则包含向详细视图控制器场景。在纵向模式下,UISplitViewController隐藏主视图控制器的场景,详细视图控制器管理的场景占住整个屏幕,但可以通过Popover(弹出菜单)访问主视图场景。Popover是在当前视图之上的一个弹出窗口,在分割视图控制器中,一般可以通过详细视图中工具条(toolbar)按钮来访问或触发。在iPad返回横向模式时,主视图场景和详细视图场景重新回到并排显示,且Popover的访.
阅读全文
摘要:在iOS App开发过程中,在UIImage中加载来自URL的图像,可以通过如下的Objective-C代码来实现,下面是表视图中加载图像的一段代码:NSDictionary *object = _objects[indexPath.row];cell.textLabel.text = [object objectForKey:@"ProductName"];cell.detailTextLabel.text = [[object objectForKey:@"CurrentPrice"] description];NSString *myURL = [
阅读全文
摘要:默认Xcode 中的iPhone、iPad 模拟器都是黑色的背景图,无法像正常的iPhone 一样设置其主屏幕和锁定屏幕的图像,但可以按照下面的操作来实现(在模拟器显示的情况下,按住Command + L 键,可以显示锁定屏幕):1. 从Finder 中拖放一个图像文件从模拟器界面;2. 默认的Safari浏览器会打开,点击并按住图像文件;3. 在弹出菜单中,选择 — 存储图像;4. 返回模拟器中的–照片App,打开该App,选择你喜欢的图像文件;5. 按照在iPhone/iPad 设备上的操作,设置图像文件为主屏幕和锁定屏幕的背景图;锁定屏幕界面:
阅读全文