码迷,mamicode.com
首页 > 移动开发 > 详细

iOS实现简单备忘录程序——TaskList

时间:2015-11-10 21:14:44      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:ios   objective-c   备忘录   tableview   

       在实际生活中,由于事情太多太杂,我们往往会忘记一些事情。该应用就是基于这样的用户痛点而开发的任务列表。类似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中实现如下:

#import "ViewController.h"
#import "AppDelegate.h"
#import <CoreData/CoreData.h>


@interface ViewController ()<UITableViewDataSource,UITableViewDelegate,UIScrollViewDelegate>

@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

     最后的实现效果如下:

技术分享


技术分享

github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS实现简单备忘录程序——TaskList

标签:ios   objective-c   备忘录   tableview   

原文地址:http://blog.csdn.net/chenyufeng1991/article/details/49763713

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!