《iOS6 application development》学习之路:No.4: 几个coding中发现的小问题

简介:

不得不说 XCode是我用过的最好的IDE了,代码自动补全、debug、真机调试都非常方便,可是就是因为功能很强大了,有一些细节上很容易出错。记录一下最近几天编程中遇到的小问题:

1. 在写第14章flowerColorTable程序时,发现程序完成之后,每次点击一个条目是不会有反应的,而点击其他条目的时候,弹出的对话框里的内容是上次点击的条目内容,后来经过好一番找,才找到问题所在。

原本的响应单元格选择事件的函数是这样的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    UIAlertView* showSelection;
    NSString* flowerMessage;
    
    switch (indexPath.section) {
        case kRedSection:
            flowerMessage = [[NSString alloc] initWithFormat:@"You Chose the red flower - %@", _redFlowers[indexPath.row]];
            break;
        case kBlueSection:
            flowerMessage = [[NSString alloc] initWithFormat:@"You Chose the blue flower - %@", _blueFlowers [indexPath.row]];
            break;
        default:
            flowerMessage = [[NSString alloc] initWithFormat:@"I have no idea what you chose"];
            break;
    }
    
    showSelection = [[UIAlertView alloc]
                     initWithTitle:@"Flower Selected" message:flowerMessage delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [showSelection show];
}

但是因为XCode强大的自动补全功能,我直接默认的函数写成了didDeSelectRowAtIndexPath,虽然就差2个字母,但是想必函数的意义也可以轻易地从字面上区别出来了。

2. 设置一个背景按钮,当用户点击键盘以外的区域是能够自动隐藏键盘。

这个小技巧在第7章的时候就体会过了,意思是在用户输入框中需要输入内容的时候,会弹出来键盘,用户输入完成之后,点击键盘上的Done或者点击键盘以外的区域都可以完成隐藏键盘的功能。这个功能的技巧是设置一个最下方的充满整个屏幕的button,然后把button的点击事件和退出键盘绑定在一起。

但是需要注意的是,一定要把键盘的模式设定成为Cutom,这样它就会看不到,而不是把它隐藏了。同时如何把这个button放置到最底层呢?其实就是在大纲区域,把这个按钮拖到最上部就行了,从上到下,控件一次是从后到前排列的。

3. 关于

NSDocumentDirectory和NSDocumentationDirectory

- (IBAction)storeSurvey:(id)sender {
    NSString* csvLine = [NSString stringWithFormat:@"%@,%@,%@\n",
                         self.firstName.text,
                         self.lastName.text,
                         self.emai.text];
    
    NSString* docDir = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString* surveyFile = [docDir stringByAppendingPathComponent:@"surveyresults.csv"];
    
    if (![[NSFileManager defaultManager] fileExistsAtPath:surveyFile]) {
        [[NSFileManager defaultManager]
         createFileAtPath:surveyFile contents:nil attributes:nil];
    }
    
    NSFileHandle* fileHandle = [NSFileHandle
                                fileHandleForUpdatingAtPath:surveyFile];
    [fileHandle seekToEndOfFile];
    [fileHandle writeData:[csvLine dataUsingEncoding:NSUTF8StringEncoding]];
    [fileHandle closeFile];
    
    self.firstName.text = @"";
    self.lastName.text = @"";
    self.emai.text = @"";
}
这段代码是把内容存储到程序的文件下面的document目录里面,但是刚开始的时候,我写成了 NSDocumentationDirectory这个函数,结果在想要输出文件中内容的时候每次都找不到文件。后来google了一下这两个函数的区别:

NSDocumentDirectory才是documents的路径,NSDocumentationDirectory是Documentation的路径。两者是不一样的。

目录
相关文章
|
4月前
|
前端开发 开发工具 Swift
学习iOS开发的准备
准备学习iOS开发?确保有Mac和最新Xcode,先学好编程基础特别是Swift。利用Apple官方文档、在线课程和书籍作为资源。熟悉Xcode及Git,通过实践项目和开源代码积累经验。深研架构模式、核心框架和优化技巧。加入开发者社区,关注行业动态,持续学习。
49 1
|
安全 前端开发 Android开发
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
鸿蒙开发学习是一项探索性的工作,旨在开发一个全场景分布式操作系统,覆盖所有设备,让消费者能够更方便、更直观地使用各种设备。
679 6
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
|
iOS开发
iOS UIKit Dynamics Demo 学习地址列表
iOS UIKit Dynamics Demo 学习地址列表
51 0
|
XML JSON 编解码
IM通讯协议专题学习(九):手把手教你如何在iOS上从零使用Protobuf
接上篇《金蝶随手记团队的Protobuf应用实践(原理篇)》,本文将以iOS端的Objective-C代码为例,图文并茂地向您菔救绾卧趇OS工程中快速使用Protobuf,希望对你有帮助。
176 0
IM通讯协议专题学习(九):手把手教你如何在iOS上从零使用Protobuf
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
150 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
存储 Unix 编译器
|
存储 算法 iOS开发
|
存储 缓存 算法
iOS底层学习——对象初始化探索
iOS底层学习——对象初始化探索
|
物联网 Android开发 iOS开发
iOS开发 - 蓝牙学习的总结
iOS开发 - 蓝牙学习的总结
186 0
|
API iOS开发 开发者
学习iOS开发如何进阶?
前言 如果你有志于将iOS开发作为职业,或者已经是一位iOS开发者,那么你应该听说过唐巧的名字。唐巧,2012年从网易有道离开参与创业, 目前是猿题库iOS高级研发工程师。
2234 0