《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的路径。两者是不一样的。

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

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    iOS8 中无需开源库的内置功能一览
  • 7
    iOS7应用开发7:自定义视图、手势操作
  • 8
    IOS小工具以及精彩的博客
  • 9
    Facebook SDK(iOS)初学讲解
  • 10
    iOS:应用程序的线程安全性
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    28
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    29
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    40
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    27
  • 6
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    143
  • 7
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    247
  • 8
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    90
  • 9
    深入探索iOS开发中的SwiftUI框架
    145
  • 10
    ios样式开关按钮jQuery插件
    61