zoukankan      html  css  js  c++  java
  • 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 = [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的开发吧。

  • 相关阅读:
    04_远程管理常用命令
    03_文件和目录常用命令
    02_Linux 终端命令格式
    01_常用 Linux 命令的基本使用
    test
    centOS 7 更改root密码
    安装 centos7
    1
    IO模型
    使用git连接到Github
  • 原文地址:https://www.cnblogs.com/guanliyang/p/3779679.html
Copyright © 2011-2022 走看看