登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

查看: 160|回复: 6

iOS实现简单备忘录程序――TaskList,tasklist命令详解

[复制链接]

215

主题

455

帖子

1142

金钱

手工艺人

发表于 2018-1-11 14:44:05 | 显示全部楼层 |阅读模式

        

        在实际生活中,由于事情太多太杂,我们往往会忘记一些事情。该应用就是基于这样的用户痛点而开发的任务列表。类似iOS自带的备忘录程序。你可以随时记录一些信息,并可以实时的进行保存。在程序重新打开时会显示你保存的所有信息。该Demo我已经上传 https://github.com/chenyufeng1991/iOS-TaskList 。

        该应用主要实现的技术就是iOS控件UITableView的使用和CoreData进行存储。TableView类似Android中的ListView,可以列表显示信息,并自动增加行数。而CoreData是iOS对SQLite嵌入式数据库的封装,可以极为方便的进行数据的增删改查。我们通过代码来实现一下:

        (1)由于我需要使用CoreData来存储数据,所以在一开始创建项目的时候需要勾选Use CoreData那个复选框。项目名称为TaskList.

        (2)在创建完项目后,打开TaskList.xcdatamodeld文件,进行CoreData的数据结构设计。点击下方的Add Entity按钮,增加一个实例——Task。然后在右侧增加一个属性taskname,类型为String.因为在对于每一个任务,我们暂时只存储它的任务名称即可。

        

        

        (3)在界面中增加一个任务名称输入框,一个增加按钮,一个TableView即可。在使用segue进行代码绑定后,在ViewController中实现如下:

        

[Java] 查看源文件 复制代码
#import ViewController.h
#import AppDelegate.h
#import 


#interface ViewController ()

#property (weak, nonatomic) IBOutlet UITextField *inputTextField;
#property (weak, nonatomic) IBOutlet UITableView *taskTableView;

#property(strong,nonatomic) NSMutableArray *taskArray;

#property(strong,nonatomic) NSArray *arr;

#end

#implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  
  //应用启动的时候加载数据库文件;
  NSManagedObjectContext *context = [(AppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
  NSFetchRequest *fetchData = [[NSFetchRequest alloc] initWithEntityName:#Task];
  self.arr = [context executeFetchRequest:fetchData error:nil];
  
  self.taskArray = [[NSMutableArray alloc] initWithArray:[self.arr valueForKey:#taskname]];
}


#pragma mark - UITableViewDataSource
//每一个section有几个cell;
- (NSInteger)tableView: (UITableView *)tableView numberOfRowsInSection: (NSInteger)section{
  return self.taskArray.count;
}

- (UITableViewCell *)tableView: (UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{
  
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:#MyCell forIndexPath:indexPath];
  cell.textLabel.text = [self.taskArray objectAtIndex:indexPath.row];
  
  return cell;
}

#pragma mark - 点击增加按钮
- (IBAction)addTaskButtonClick: (id)sender {
  
  NSString *inputStr = [[NSMutableString alloc] initWithFormat:#%#,self.inputTextField.text];
  inputStr = [inputStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
  
  //判断如果输入的为空,则不添加;
  if ([inputStr  isEqual: #]) {
    
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:#提示 message:#输入的内容不能为空 preferredStyle:UIAlertControllerStyleAlert];
    [alert addAction:[UIAlertAction actionWithTitle:#确定 style:UIAlertActionStyleDefault handler:nil]];
    [self presentViewController:alert animated:true completion:nil];
  } else {
    
    //每点击一次“确定”按钮后,就把该数据存储到CoreData中;
    [self saveToCoreData:inputStr];
    
    //把一个文本存储到taskArray数组中;
    [self.taskArray insertObject:self.inputTextField.text atIndex:self.taskArray.count];
    [self.taskTableView reloadData];
    
    //清空输入框;
    self.inputTextField.text = nil;
    
    //点击确定后消失软键盘;
    [self.inputTextField resignFirstResponder];
    
    
  }
  
  
}

#pragma mark - 保存数据到CoreData;
- (void) saveToCoreData: (NSString *)taskName{
  
  NSManagedObjectContext *context = [(AppDelegate*)[[UIApplication sharedApplication] delegate] managedObjectContext];
  NSManagedObject *row = [NSEntityDescription insertNewObjectForEntityForName:#Task inManagedObjectContext:context];
  
  [row setValue:taskName forKey:#taskname];
  [context save:nil];
  NSLog(#已保存到数据库);
}




#pragma mark - UIScrollViewDelegate
//滚动TableView的时候隐藏软键盘;
- (void)scrollViewDidScroll: (UIScrollView *)scrollView{
  
  [self.inputTextField resignFirstResponder];
  
}




#end


最后的实现效果如下:

        

        

        

        

        


                                               

21

主题

7130

帖子

2440

金钱

手工艺人

发表于 2018-1-11 14:47:07 | 显示全部楼层
帮帮顶顶!!

20

主题

7101

帖子

2375

金钱

手工艺人

发表于 2018-1-11 14:50:41 | 显示全部楼层
膜拜大神~

23

主题

7099

帖子

1054

金钱

iOS大神

Rank: 6Rank: 6

分享大神

发表于 2018-1-11 14:53:42 | 显示全部楼层
code4app好的内容真的很多~赞

14

主题

7077

帖子

1475

金钱

手工艺人

发表于 2018-1-11 15:01:15 | 显示全部楼层
mark,收藏了

16

主题

7125

帖子

1174

金钱

手工艺人

发表于 2018-1-11 15:10:11 | 显示全部楼层
code4app好的内容真的很多~赞

0

主题

7075

帖子

-521

金钱

限制会员

发表于 2018-1-11 15:11:24 | 显示全部楼层
感谢大神分享,必须顶!
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

每日头条

通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表