首页 > 代码库 > 6月10日-IOS应用-日记本

6月10日-IOS应用-日记本

嗯,经过这几天的学习,我的第一个IOS应用,日记本算是学习完毕了,下面写一篇日记,记录所学到的知识和需要继续学习的地方。

 

1,首先是ViewController,必须添加两个协议UITableViewDataSourceUITableViewDelegate,必须实现这两个协议的两个方法,tableView numberOfRowsInSection和tableView cellForRowAtIndexPath,前者返回行数后者设置行内容。

2,搜索框,搜索框需要加载协议UISearchBarDelegate,它常用的两个方法-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText,--文本修改时触发,-(void) searchBarSearchButtonClicked:(UISearchBar *)searchBar点击搜索按钮时触发。

3,向下一个界面传递值。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

这个方法是写在父页面里的,比如在里面写-GLYEditViewController *EditVC = segue.destinationViewController;

    EditVC.title = deletDate;

那你子页面的title就等于deletDate。不管你点哪个按钮,跳转到哪个页面,你的子页面的title都等于deletDate。

 

4,//允许删除

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

{

    returnUITableViewCellEditingStyleDelete;

}

你这个方法可返回很多方法,然后

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{}

会接收你返回的方法名,比如

    if (editingStyle == UITableViewCellEditingStyleDelete)

 

    {

//假如删除,做一些操作。

5,谓词搜索,主要用来搜索字符串或数组,已做过笔记。

6,设置空间的样式,例如

//    设置文本框的宽,圆角及颜色

    _ContentView.layer.borderWidth     =  0.2;

    _ContentView.layer.cornerRadius    =  5.0;

 

    _ContentView.layer.borderColor     =   [UIColorgrayColor].CGColor;

一般layer.后面的属性基本能猜测出用途。

7,你给某个视图定义了identifier,然后想返回某个视图。

            UIStoryboard *storyboard = self.storyboard;

//            //identifierstoryboard上相应页面对应的设置里填写,必须保持一致

            UIViewController *push = [storyboard instantiateViewControllerWithIdentifier:@"DiaryList"];

 

            [self.navigationControllerpushViewController:push animated:YES];

8,页面的刷新。

[rootController.tableView reloadData];

9,

CoreData--引入框架,并在appDelegate里面做好了模块初始化的相关操作。

managedObjectModel里面,你模块的名字要对应。

MOdel.xcdatamodeld文件描述了表的结构以及表之间的关系,你看的视图不是表也不是库更不是数据,CoreData是盖在数据库上的一层厚厚的钢板,让你啥都看不见,必须按它给的结构写一堆死死的代码。

//    获取数据

    GLYAppDelegate *managed   = [[GLYAppDelegatealloc] init];

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"DiaryData"];

//    排序

    NSSortDescriptor *dateSort = [[NSSortDescriptoralloc] initWithKey:@"date"

                                                             ascending:NO];

    fetchRequest.sortDescriptors = @[dateSort];

    

    NSError *requestError = nil;

    NSArray *ArrayDiaryData = http://www.mamicode.com/[managed.managedObjectContext executeFetchRequest:fetchRequest

                                                                   error:&requestError];

//    拿到值

    tableData = [NSMutableArrayarrayWithObjects:nil];

    details   = [NSMutableArrayarrayWithObjects:nil];

    for (DiaryData *thisDiaryData in ArrayDiaryData) {

        [tableData addObject:thisDiaryData.title];

        [details addObject:thisDiaryData.date];

 

    }

 

又比如删除

        GLYAppDelegate *managed   = [[GLYAppDelegate alloc] init];

        NSError *error;

//        设置谓词并搜索

        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"DiaryData"];

        fetchRequest.predicate = [NSPredicate predicateWithFormat:@"date==%@", deletDate];

        NSArray *arrarResult = [managed.managedObjectContext executeFetchRequest:fetchRequest

                                                                           error:&error ];

 

        if (!error) {

            for (DiaryData *object in arrarResult) {

                [managed.managedObjectContext deleteObject:object];

            }

        }

        if ([managed.managedObjectContext hasChanges]) {

           [managed.managedObjectContext save:&error];

 

        }

 

变得繁琐的新事物总是不讨人喜欢,这块需要继续学习。

 

10,自动布局,3.5寸4寸屏幕必须兼容,过不久5寸屏幕也要兼容,横竖屏幕需要兼容,,这块-有自动布局,衡平直接不支持或换sotryboard等方法,一般不把大空间的宽高写死。

 

结余:简单要记录的就是这些,可能理解的不够深入,所以此文是日记不是教材,,嗯,收拾下代码开始第二个app的开发吧。