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

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

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

时间: 2024-10-22 20:00:01

iOS实现简单备忘录程序——TaskList的相关文章

IOS 霓虹灯简单小程序

在RootViewController.m文件中 - (void)viewDidLoad//视图加载方法 - (void)viewDidLoad { //设置红色 UIView *viewRed = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 120, 30)]; viewRed.backgroundColor = [UIColor redColor]; [self.view addSubview:viewRed]; //设置橙色 UIVi

【转】iOS平台的应用程序调试与分析

转自:看雪学院的文章 iOS平台的应用程序调试与分析 作者:zhuliang转载请保证文章完整并注明来自看雪或cd-team 本文阐述如何在iOS平台上对应用程序进行调试与分析,旨在指导新手分析iOS程序,高手请无视.内容包括软件硬件的准备.代码的解密.符号信息的获取.用gdb调试等,最后以京东LeBook为例子进行演示.1.为什么要进行调试与分析研究iOS程序有很多用处,比如:找bug或者漏洞,想知道某程序有没有漏洞或者bug.某程序能实现某功能,我想知道如何实现,如ios6发短信功能,还有比

iOS开发UI篇—程序启动原理和UIApplication

iOS开发UI篇-程序启动原理和UIApplication 一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示. (3)通过[UIApplicationsharedApplication]可以获得这个单例对象 (4) 一个iOS程序启动后创建的第一个对

iOS上简单推送通知(Push Notification)的实现

http://blog.csdn.net/daydreamingboy/article/details/7977098 iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12),结合自己的实践,写下一点笔记,仅供参考:) 由于篇幅较长,我列出简单的目录,如下 1) 理解Apple推送通知的机制 2)

swift语言 编写 ios开发 第一个程序hello world!

老实说:第一个swift语句的ios不是代码敲出来的,我甚至还没来得急看代码,hello world 就出来了..... 本人开发环境:mac osx 10.10 dp1 + xcode6 beta + swift(更低xcode不支持swift语言) 思路与大致过程: 1.建立工程,工程包含界面文件,代码文件等等 2.在工程的界面文件中加入text控件,用于显示hello world 3.输入hello world ,模拟运行 让我们一步一步来: 1.建立工程,工程包含界面文件,代码文件等等

iOS设置app应用程序文件共享

1.iOSapp应用程序文件共享 当我们用itnues连接到设备时,在应用程序栏目下面,文件共享下,点击 对应的程序,即可以在程序右边栏目里面看到应用程序共享的数据, 此时,我们可以通过右下角的 添加 和存储为 导入数据或是导出数据,如图 2. iOS设置app应用程序文件共享 设置流程 xcode 打开项目----在 info.plist 文件,添加 UIFileSharingEnabled 并设置属性为 YES 在app内部,将您希望共享的文件放在应用程序的Documents目录下

初学Java:整理的几个简单小程序以及初学心得

整理这几天里写的几个小程序,都是循环练习//设N是一个四位数,它的9倍恰好是其反序数//(例如:1234的反序数是4321),求N值package Azhi;public class Job_5 {public static void main(String[] args) { for(int n=1000;n<=9999;n++){ int ge=n%10; int shi=n%100/10; int bai=n%1000/100; int qian=n/1000; int temp=ge*1

单片机 学习笔记(二)——简单小程序

今天收获了单片机的几个简单小程序:     延时程序: void Delay(unsigned int xx) //输入 xx :ms { while(xx--) { Delay1ms(); } } void Delay1ms() //@11.0592MHz 1ms { unsigned char i, j; _nop_(); _nop_(); _nop_(); i = 11; j = 190; do { while (--j); } while (--i); } 流水灯程序: #include

JavaSE - 一个简单的程序对新手的启发

一个简单的程序: 题目:现在完成一个简单的程序,可以输出两个数字的乘方. public class TestJava{ public static void main(String args[]){ int num = 10 ; // 定义整型变量 num = 30 ; // 修改变量的内容 System.out.println("num的内容是:" + num) ; System.out.println("num * num = " + num * num) ;