最近在学习<objective-c编程>这本书,根据书中的教程编写了这个简单Ios小程序iTahDoodle.这是一个简单的任务管理程序.可以通过"Insert"按钮来插入.后通过查阅官方文档,增加了delete的功能.
iTahDoodle共应用到了四个UI控件:两个Button分别用来插入,删除,一个TextField用来输入任务,一个TableView来显示任务列表.iTahDoodle需要将用户的任务信息保存在property list格式(xml格式)的文件中,因此需要使用一个C辅助函数来返回该文件的路径(NSString对象).
NSString *docPath(){ NSArray *pathList=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); return [[pathList objectAtIndex:0] stringByAppendingPathComponent:@"data.td"];}
<Xcode可以识别#pragma mark指令,并根据该指令为文件中的代码分组.可以使用此命令来为代码分块.>
应用启动时时无法工作或接受输入的,启动完成后,UIApplication实例会向其委托对象发送<application:didFinishLaunchingWithOptions:>消息.凡是需要在程序能够和用户交互前就完成的初始化工作,都应该在该方法中实现.
增加和删除任务的代码如下
-(void)addTask:(id)sender{ //获取新任务的文字描述 NSString *t=[taskField text]; //如果taskField没有内容,就直接返回 if([t isEqualToString:@""]){ return; } //将新任务(字符串)加入tasks数组 [tasks addObject:t]; //刷新视图表格,显示新加入的任务 [taskTable reloadData]; //清空taskField [taskField setText:@""]; //关闭键盘 [taskField resignFirstResponder];}-(void)deleteTask:(id)sender{ //indexPathForSelectedRow方法可以返回被选中的行存储的信息在数组中的位置 int numOfSelectedCell =[taskTable indexPathForSelectedRow].row; [tasks removeObjectAtIndex:numOfSelectedCell]; [taskTable reloadData];}
当用户按下某个UIControl对象,并且该对象可以成为第一相应对象,拥有第一响应对象状态的UIControl对象可以处理来自键盘的文字输入及摇动事件等,被按下的UIControl对象收到becomeFirstResponder消息,开始处理事件并保持这一状态,直到另一个响应对象的对象成为第一响应对象昂,或者是自己收到resignFirstResponder消息.表现在程序中就是当用户点击TextField的时候会弹出键盘,当点击done的时候,键盘会收起来.
最终效果如下,虽然很简陋,但终究是第一步.