暑假第三周总结
Posted Billy Miracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暑假第三周总结相关的知识,希望对你有一定的参考价值。
这一周我对之前的appshare进行了修改与订正,接下来进行了学生管理系统的编写。此外,还学习了几种主要的传值方式。
appshare部分:
- 完善了按钮点击后状态的保存:
在上一个界面的viewdidload函数中创建后面的界面,而不是在单独的cell中新alloc下个界面。这样可以保证界面回退后不会重新初始化,即可保证按钮的状态不变。 - 修改了聊天界面,效果:
每次点击发送后是两个人轮流说话的模式,两个人可以说不同的文字了。返回上一层后,也保留了最后一次交流的内容:
这里使用两个不同的关键字区分两种cell:
if ([reuseIdentifier isEqualToString:@"left"]) {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
。。。。。。
}
return self;
} else {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
。。。。。。
}
return self;
}
因为左边的信息与右边的信息保存在两个不同的数组中,最后只需判断一下再将最后的对话内容传回上一个页面即可。
传值学习部分:
写了几个博客:
KVO传值
[iOS开发]block传值
[iOS开发]通知传值
学生管理系统部分:
学习了几种传值方式,将几种传值方式应用了一下,首页长这个样子:
几个功能界面相似这里举一个例子:
查找学生可以通过学生的任一属性查找,或者同时使用多种属性查找。找到后可以进行删除或更改的操作。
接下来我添加了排序了功能。这里我使用了数组自带的排序方法,以按成绩排序为例:
- (void)pressScore {
_studentArraySort = [_studentArraySort sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
Student *student1 = obj1;
Student *student2 = obj2;
NSComparisonResult result = [[NSNumber numberWithInt:[student1.studentScore intValue]]compare:[NSNumber numberWithInt:[student2.studentScore intValue]]];
if (result == NSOrderedSame) {
result = [student1.studentClass compare:student2.studentClass];
return result == NSOrderedDescending;
} else {
return result == NSOrderedAscending;
}
}];
[self pressBack];
}
使用- (NSArray<ObjectType> *)sortedArrayUsingComparator:(NSComparator NS_NOESCAPE)cmptr API_AVAILABLE(macos(10.6), ios(4.0), watchos(2.0), tvos(9.0));
函数。这个函数将数组排序好后返回一个新的数组。这里
if (result == NSOrderedSame) {
result = [student1.studentClass compare:student2.studentClass];
return result == NSOrderedDescending;
} else {
return result == NSOrderedAscending;
}
的作用是,当分数的比较结果为NSOrderedSame即分数相同时,这两名学生将会继续按照他们的班级继续比较,按照从小号班级到大号班级的顺序排列。此外,我还学习了按照拼音首字母来排序,这里需要先将名字转成拼音,使用的方法是:
NSMutableString *name1 = [NSMutableString stringWithString:student1.studentName];
NSMutableString *name2 = [NSMutableString stringWithString:student2.studentName];
CFStringTransform((CFMutableStringRef)name1, NULL, kCFStringTransformToLatin, false);
CFStringTransform((CFMutableStringRef)name2, NULL, kCFStringTransformToLatin, false);
NSComparisonResult result = [name1 compare:name2];
在应用各种传值时还是碰到过一些困难的,我相信未来的学习之路还很长。
以上是关于暑假第三周总结的主要内容,如果未能解决你的问题,请参考以下文章