-(float)getTableViewHeight { [self.tableView layoutIfNeeded]; return self.tableView.contentSize.height; }
需要先layoutInfNeeded
ListView中有一个方法
setChoiceMode(ListView.CHOICE_MODE_SINGLE);
用来设置选中后的状态是否为高亮,但是ListView的视图经过自定义后,这个效果就消失了。
这个时候需要给自定义视图加上背景才可以修复这个问题
android:background="?android:attr/activatedBackgroundIndicator"
object-c是拥有一些附加特性的C语言。
hello world的源代码如下:
#import <Foundation/Foundation.h>
int main(ubt argc,const char *argv[]){
NSLog(@"hello world!");
return (0);
}
分析如下:
1、#import
与c一样,object-c使用头文件来包含元素声明,这些元素包含结构体、符号常量、函数原型等。在c里,用#include来实现。
#import是GCC编绎器提供的,xcode在编绎object-c,c,c++时都会用到它。
#import可保证头文件只包含一次,而无论它在文件中出现多少次。
#import <Foundation/Foundation.h>:告诉编绎器查看Foundation框架中的Foundation.h头文件。
框架是包含在一个单元中的部件集合,如apple公司将cocoa,carbon,quicktime,openGL等技术做为框架集。其中,cocoa的又由Foundation和Applicationn Kit(也称为AppKit)组成 ,另外还有两个支持框架的套件:Core Animation和Core Image。Foundatin框架又是处理用户界面之下的层的特性,如数据结构和通信机制 。所以,它非常重要!
如果你要精通cocoa,还要学习AppKit,它包含Cocoa的高级特征:用户界面元素、打印、声音颜色等管理
。
使用#import导入主头文件,可以使用整个框架的所有特性,且加载的速度会很快,不会因为文件数量的大而变慢。
要查看Foundation框架包含哪些头文件,可以查年Headers目录:/System/Library/Frameworks/Foundation.framework/Headers/
2、NSLog()和@""
NSLog()在c中用printf(),但NSLog()比printf()增加了特性。
和printf()一样,NSLog()以字符串为第一个参数,这个字符串可以包含格式说明符
(如%d)
NS前缀是有历史原因的,指的是NextSTEP。
@是object-c在c的基础上添加的特性之一,它表示后面的字符串是作为cocoa的NSString来处理
。NSString与String相比,有如下功能:
告知其长度;
将自身与其它字符串比较;
将自身转换为整型值或浮点值。
而这些功能是使用c的字符串无法实现的。
布尔类型:
c中是bool(true,false),而object-c中是BOOL(YES,NO)
布尔型的例子如下:
#import <Foundation/Foundation.h>
BOOL arcIntsDifferent(int i,int j){
if(i===j){
return (NO);
}else{
return (YES)
}
}
NSString *boolString (BOOL yesno){
if(yesno==YES){
return @"YES";
}else{
return @"NO";
}
}
int main(int argc,const char *argv[]){
BOOL b;
b = arcIntsDifferent(5,5)
NSLog("arc %d and %d is diffrent?%@",5,5,boolString(b));
return (0);
}
分析如下:
1、boolString()的返回类型是一个指向NSString的指针
,这表明函数会返回一个cocoa的字符串,而不是c的字符串,所以函数内用@""。
其它:
我开发的环境:
mac:10.6.3
xcode:3.2.4
ios sdk:4.1
xcode的目录:/Developer/Applications