關於tableView的一些優化

關於優化
除了以前用單例模式把數據放在一個類中的優化以外,今天又總結了其餘幾種關於tableView的一些優化
1.label等控件
當label的公共樣式屬性不少的時候,咱們有須要建不少label的時候,咱們能夠建立一個categary 把公共屬性部分放在方法中 把不一樣的屬性做爲參數傳進去
2.cell內容顯示
cell顯示內容的時候,以前咱們是對cell中的每一個控件依次賦值,若是這個自定義cell中有幾十個控件的話,咱們須要寫幾十行代碼,顯然這太繁瑣了
優化前:
        cell. iconImageViwe . image  = [ UIImage   imageNamed :stu. icon ];
        cell.
nameLabel . text  = stu. name ;
        cell.
sexLable . text  = stu. sex ;
        cell.
phoneNumberLable . text  = stu. phoneNumber ;
        cell.
introduceLable . text  = stu. introduce ;
 
優化後:  cell. student  = stu;
 
name、sex、phoneNumber等這些都是學生對象的屬性,因此咱們能夠把這個學生直接傳給cell,
cell拿到這個學生對象之後,再把這個學生對象的各個屬性賦給本身的子控件。
cell要能直接拿到這個學生對象,就須要有一個student的屬性可供外界訪問和賦值。而後咱們須要重寫這個屬性的setter方法。
-( void )setStudent:( Student  *)student
{
    
if  ( _student  != student) {
        [
_student   release ];
        
_student  = [student  retain ];
    }
    // 拿到這個對象之後把對象的屬性賦給cell的各個子控件,那麼子控件上顯示相應的值
    
  self . iconImageViwe . image  = [ UIImage   imageNamed :student. icon ];
    
self . nameLabel . text  = student. name ;
    
self . phoneNumberLable . text  = student. phoneNumber ;
    
self . sexLable . text  = student. sex ;
    
self . introduceLable . text  = student. introduce ;
    
}
3.把自定義cell中的視圖設爲懶加載對象(該視圖須要被使用的時候纔會被建立)
該對象只有在被取值,即被調用它的getter方法時,對象纔會被建立,因此其初始化是在getter方法中實現的,因此咱們 須要改寫每一個屬性的getter方法,先判斷該對象是否爲空,若爲空,則建立。例如:
-( UILabel  *)nameLabel
{
    
if  ( _nameLabel  ==  nil ) {
        
_nameLabel  = [[ UILabel   alloc initWithFrame : CGRectMake ( CGRectGetMaxX ( _iconImageViwe . frame ) +  kMargin _iconImageViwe . frame . origin . y 150 30 )];
        
_nameLabel . backgroundColor  = [ UIColor   cyanColor ];
        [
self   addSubview : _nameLabel ];
    }
    
return   _nameLabel ;}
相關文章
相關標籤/搜索