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

 

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

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

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

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

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

title

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

 

4,//允许删除

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath
{
    returnUITableViewCellEditingStyleDelete;
}

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

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

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

    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;
//            //此identifier在storyboard上相应页面对应的设置里填写,必须保持一致
            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];
sortDescriptors = @[dateSort];
    
NSError *requestError = nil;
NSArray *ArrayDiaryData = [managed.managedObjectContext executeFetchRequest:fetchRequest
error:&requestError];
//    拿到值
    tableData = [NSMutableArrayarrayWithObjects:nil];
    details   = [NSMutableArrayarrayWithObjects:nil];
for (DiaryData *thisDiaryData in
tableData addObject:thisDiaryData.title];
details addObject:thisDiaryData.date];
 
    }

 

又比如删除

GLYAppDelegate *managed   = [[GLYAppDelegate alloc] init];
NSError
//        设置谓词并搜索
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"DiaryData"];
predicate = [NSPredicate predicateWithFormat:@"date==%@", deletDate];
NSArray *arrarResult = [managed.managedObjectContext executeFetchRequest:fetchRequest
error:&error ];
 
if
for (DiaryData *object in
managedObjectContext deleteObject:object];
            }
        }
if ([managed.managedObjectContext hasChanges]) {
managedObjectContext save:&error];
 
        }

 

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

 

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

 

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