1. 程式人生 > >UITableViewCell 設定單元格選中後只顯示一個打勾的狀態

UITableViewCell 設定單元格選中後只顯示一個打勾的狀態

今天做個表格,突然發現在選中某行時打勾,再次選中其它行時,上次選中的行的勾還在,不能自動消失。 於是試了以下3種方法: 1、// 第一種方法:在選中時先遍歷整個可見單元格,設定所有行的預設樣式,再設定選中的這行樣式,此方法不能取消單元格的選中

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath

{

       NSArray *array = [tableView visibleCells];

    for (UITableViewCell *cell in array) {

        [cell setAccessoryType:UITableViewCellAccessoryNone];

        cell.textLabel.textColor=[UIColor blackColor];

    }

   UITableViewCell *cell=[self.tableView cellForRowAtIndexPath:indexPath];

    cell.textLabel.textColor=[UIColor blueColor];

    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];

}

此時只設定了在可見範圍內選擇的是一行,還得設定滾動後的選中狀態,

-(void

)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath

{

 NSIndexPath *index=[tableView indexPathForSelectedRow];

        if (index.row==indexPath.row&& index!=nil)

        {

            cell.backgroundColor=[UIColor colorWithRed

:232.0/255.0 green:232.0/255.0blue:232.0/255.0 alpha:1.0];

            cell.textLabel.textColor=[UIColor colorWithRed:0.0 green:206.0/255.0blue:192.0/255.0 alpha:1.0];

        }

        else

        {

            cell.backgroundColor=[UIColor clearColor];

            cell.textLabel.textColor=[UIColor blackColor];

        }

}

單元格是否相同需要用到比較方法

NSIndexPath *index=[tableView indexPathForSelectedRow];

NSComparisonResult result=[indexPath compare:index];

2、//第二種方法:先定位到最後一行,若選中最後一行直接退出,否則用遞迴改變上次選中的狀態,重新設定本次選中的狀態。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

   current=indexPath.row;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath

{

if(indexPath.row==current){

        return;

    }

    UITableViewCell*newCell = [tableView cellForRowAtIndexPath:indexPath];

 if(newCell.accessoryType==UITableViewCellAccessoryNone)

    {

        newCell.accessoryType=UITableViewCellAccessoryCheckmark;

        newCell.textLabel.textColor=[UIColor blueColor];

    }

    NSIndexPath*oldIndexPath =[NSIndexPath indexPathForRow:current

 inSection:0];

    UITableViewCell*oldCell = [tableView cellForRowAtIndexPath:oldIndexPath];

 if(oldCell.accessoryType==UITableViewCellAccessoryCheckmark)

    {

        oldCell.accessoryType=UITableViewCellAccessoryNone;

        oldCell.textLabel.textColor=[UIColor blackColor];

    }

   current=indexPath.row;

}

3.//方法三:設定一個全域性變數,選中的時候傳值,然後通過重新載入資料,使得在選中這行打勾,其他行無樣式,此方法載入的時候第一行預設打勾了

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath

{

     current=indexPath.row;

    [self.tableView reloadData];

}

- (UITableViewCellAccessoryType)tableView:(UITableView*)tableView accessoryTypeForRowWithIndexPath:(NSIndexPath*)indexPath

{

    if(current==indexPath.row&&current!=nil)

    {

 return UITableViewCellAccessoryCheckmark;

    }

    else

    {

 return UITableViewCellAccessoryNone;

    }

}

或者直接在

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath裡面設定

單元格的預設高度為44

NSLog(@"%@",NSStringFromCGRect(cell.frame));

設定選中時的背景顏色可以用selectedbackgroundview設定

相關推薦

UITableViewCell 設定單元選中顯示一個狀態

今天做個表格,突然發現在選中某行時打勾,再次選中其它行時,上次選中的行的勾還在,不能自動消失。 於是試了以下3種方法: 1、// 第一種方法:在選中時先遍歷整個可見單元格,設定所有行的預設樣式,再設定選中的這行樣式,此方法不能取消單元格的選中 - (void)tableView:(UITableView 

UITableView設定單元選中顯示一個的三種簡單方法(僅供參考)

1、第一種方法:先定位到最後一行,若選中最後一行直接退出,否則用遞迴改變上次選中的狀態,重新設定本次選中的狀態。 - (UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIn

NestedScrollView中巢狀Listview顯示一個item

出現這種情況的原因是Listview能識別NestedScrollView的高度。 解決辦法是新建一個MyListView繼承ListView然後重寫其中的onMeasure方法 具體實現: public class MyListView extends ListView {

在Excel裡面,單元里輸入公式顯示公式本身,不顯示結果,怎麼辦

這種情況是對Excel進行了設定,設定的就是在單元格中只顯示公式,不顯示結果,解決的辦法有兩個: 1 用快捷鍵CTR+~ 2 點選"公式"選項卡,然後反選裡面的"顯示公式"按鈕(這是Excel

Excel2007設定單元格式,並不能立即生效必須挨個雙擊單元,才能生效。資料行很多,效率太低。

原因:Excel2007設定過單元格格式後,並不能立即生效必須挨個雙擊單元格,才能生效。資料行很多。效率太低。 原因:主要是一些從網上拷貝過來的日期或數字excel預設為文字格式或特殊-中文數字格式大小寫。 手動設定單元格,將格式改成日期格式,但仍不能參與計算。只有挨個單元格雙擊,才能生效;才可以計

JavaFx表格檢視TableView設定單元可編輯(需兩步實現)

只需兩步: 1. tableView.setEditable(true);//表格設定為可編輯 2. colUrl.setCellFactory(TextFieldTableCell.for

Aspose.Cells如何設定單元數字和日期的顯示格式

Aspose.Cells還為開發人員提供了很多內嵌的數字和日期格式,開發人員可以通過Style物件的Number屬性呼叫這些內嵌格式,下面是列舉出的Aspose.Cells提供的內嵌顯示格式: 咱們可以通過下面的程式碼來實際看下怎麼使用這些內嵌的單元格顯示格式: //Instantiating a

使用poi導出Excel,並設定單元內容類型,拋出異常

sdro spa ppr 相同 值類型 setfill dropdown 整數 csdn 本例子使用的是HSSF,為Excel2003提供處理方案。 設定為輸入類型為數值 import org.apache.poi.hssf.usermodel.DVConstraint;

c# asp.net設定單元格式

設定單元格格式如下: dg.Items[i].Cells[sfzh].Attributes.Add("style", "vnd.ms-excel.numberformat:@"); //dg是一個datatable,i表示第幾行,sfzh是需要轉換格式的列名 //把vnd.ms-ex

VUE-003-前端表格資料展示時,設定單元(el-table-column)保留空格和換行

在使用 el-table 展示資料時,單元格中的資料有可能存在空格和換行符,若不進行設定,瀏覽器預設會取消空格和換行符,如下所示:   解決方法: 將單元格的樣式 “white-space” 屬性設定為“pre-wrap” 即可解決。在VUE頁面中新增如下樣式設定 1

laravel匯出excel並設定單元格式

$list = $this->recommend($request); $data = array(); foreach($list as $k=>$v){ $data[] = array_values($v); $len = count($v); } $header =

POI 設定單元樣式

public static void writeExcel(List<ServAuthBean> data_list){ //新建工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); //自定義顏色 HSSFPalette pa

C#實戰016:Excel操作-設定單元屬性

 獲取單元格之後我們需要對單元格進行操作,比如過單元格寬、單元格高、單元格背景色、單元格邊框等等。 App = new Application(); //建立 Excel物件 object missing = Missing.Value; //獲取缺少

xlsxwriter【1.1.2】設定單元格式

字典方式設定單元格格式 #通過字典的方式直接設定格式 workfomat = workbook.add_format({ 'bold' : True, #字型加粗 'border' : 1, #單

openpyxl設定單元大小(行高和列寬)

本文主要討論 openpyxl如何設定(調整)單元格大小(行高和列寬),其他功能可參考:Python3 進行讀取、修改和寫Excel表格(.xlsx檔案)的常用功能示例 https://blog.csdn.net/COCO56/article/details/84403107 示例程式碼

jqGrid設定單元為不可編輯狀態&¬-editable-cell

要求:設定單元不可編輯。 onCellSelect: function(rowid, iCol, cellcontent, e) { if(cellcontent !="&nbsp;" ){ //$("#gridGyoumuK

css3實現固定表格頭部而無需設定單元td的寬度

背景 最近小弟在工作都是做後臺系統,一堆的表格,各種各樣的。然後需求上要有固定的表頭的表格,如下圖所示 在網上查詢固定表頭的實現方式為: thead 設定為 fixed 拆分表格為兩個表格 thead一個,tbody一個 ​然而上面

QT QTableView用法小結(設定單元字型顏色,文字字型...)

這幾天在公司做關於衰減開關的上位機,用到很多表格,其中表格基本上都是用QTableView進行編寫。為了防止以後忘記,同時也給後續的同學一點學習建議,特此寫下這篇部落格。 QTableView常用於實現資料的表格顯示。下面我們如何按步驟實現學生資訊表格:一 新增表頭

android mtp模式下連線PC顯示指定資料夾

轉載請註明文章出錯及作者 作者:Xandy 出處:http://blog.csdn.net/xl19862005 一、mtp概述 android在3.0以後的版本加入了mtp的支援,相對於mass storage模式,由於mtp優越性,現在幾乎所有的手機連線PC後都是以mtp的方式進

laravel-excel設定單元格式及ignoreEmpty的用法

laravel匯入匯出excel的外掛:mattwebsite/excel 安裝: composer require mattwebsite/excel  注意:3.0沒有匯入模組只有匯出功能