【iOS开发】关于Xcode8后产生的viewForHeaderInSection、viewForFooterInSection设置不产生效果的问题

以前的时候使用viewForHeaderInSection和viewForFooterInSection可以设置header和footer的view的属性、颜色等等,现在发现失效了,设置后运行的时候不显示:

即上述方法不产生效果;

后来发现必须指定titleForHeaderInSection或者titleForFooterInSection的字符串才能产生效果,即:

这样才能正确显示出来上面设置的背景颜色~

【iOS开发】理解 IBOutlet 和 IBAction

Outlet(输出口)
  • 为了能让代码引用nib中的对象,我们在代码中对应的变量前面加上IBOutlet来修饰标记,本身来说它只是个标记,没有什么实际意义,只是用来告诉编译器,这个变量有些特别,是个界面的Outlet,Outlet要和nib文件(也就是storyborad里面的界面)里面的一个对象关联起来(建立了一个connection),一旦建立了连接,我们就说当前这个标记了IBOutlet的变量是nib文件中某对象(object)的referencing outlet
  • 所以说 Outlet是一个变量,是一个带有outlet标记的变量,outlet connection是nib对象创建之后,通过nib里面的定义,在runtime的时候,把它们关联起来的一个机制,这个关联关系建立起来之后,这个outlet就是这个nib对象的referencing outlet
Action Connection(操作)
  • 界面发生事件后,需要一段代码来调用一个方法,响应这个操作,IBAction就是用来标记代码中这个方法的。
  • 在代码中对应的方法前面加上IBAction标记,本身来说它只是个标记,没有什么实际意义,只是用来告诉编译器,这个方法有点特别,是一个界面中的对象的Action行为方法,Action要和nib文件里面(也就是界面)的一个界面对象关联起来(建立了一个Action Connection),一旦建立了连接,我们就说当前这个标记了IBAction的方法是nib文件(也就是界面)中某对象所需要响应的事件

总结:所以说IBOutlet和IBAction都只是一个标记,IBOutlet用来标记代码片段中的变量,这个变量是应该和界面中某个对象相关联的;IBAction应该用来标记代码片段中的方法,这个方法是应该和界面中的某个对象相关联的,用来相应对象应该响应的操作

【iOS开发】理解Action、IBACtion、Action Connection

Action Connection(操作)
  • 界面发生事件后,需要一段代码来调用一个方法,响应这个操作,IBAction就是用来标记代码中这个方法的。
  • 在代码中对应的方法前面加上IBAction标记,本身来说它只是个标记,没有什么实际意义,只是用来告诉编译器,这个方法有点特别,是一个界面中的对象的Action行为方法,Action要和nib文件里面(也就是界面)的一个界面对象关联起来(建立了一个Action Connection),一旦建立了连接,我们就说当前这个标记了IBAction的方法是nib文件(也就是界面)中某对象所需要响应的事件

【iOS开发】理解IBOutlet、Outlet、referencing outlet、outlet connection

为了能让代码引用nib中的对象,我们在代码中对应的变量前面加上IBOutlet来修饰标记,本身来说它只是个标记,没有什么实际意义,只是用来告诉编译器,这个变量有些特别,是个界面的Outlet,Outlet要和nib文件(也就是storyborad里面的界面)里面的一个对象关联起来(建立了一个connection),一旦建立了连接,我们就说当前这个标记了IBOutlet的变量是nib文件中某对象(object)的referencing outlet
所以说 Outlet是一个变量,是一个带有outlet标记的变量,outlet connection是nib对象创建之后,通过nib里面的定义,在runtime的时候,把它们关联起来的一个机制,这个关联关系建立起来之后,这个outlet就是这个nib对象的referencing outlet

【iOS开发】什么是Bundle,每个iOS应用实际上是一个Bundle

  • Bundle是一个内部结构按照标准规则组织的特殊目录
    • 也可以说,Bundle是一个带有Info.plist的目录
  • 每个iOS应用其实都是一个Application类型的Bundle,也就是说我们生成的.app实际上就是一个目录文件。
  • 通过Foundation里面的NSBundle类,我们可以访问Bundle里面的信息,也可以访问目录里面的资源
  • NSBundle中中我们使用的一个最重要的函数就是mainBundle,通过它可以读取我们预先打包好的资源
  • resource bundle 和 framework 都可以嵌在mainBundle里面
    • framework实际上是一种特殊的Bundle,它里面的资源是一个个动态库,一个个可执行的代码