2015-06-19 41 views
0

我有一個表格視圖和一個文本字段。無論人在該表格視圖中選擇什麼,都將出現在文本框中。根據所選表格視圖行更新UILabel

實例:在我的表視圖中的選擇「一」「二」「三」

如果我選擇「一」,複選標記出現在我的tableview和「一個」會出現在我的文本字段好。

我知道如何使用stringByAppendingString添加字符串連接在一起,所以當我選擇「二」和「一」仍處於選中狀態,我的標籤將顯示爲「ONETWO」

現在我的問題:如果我除了選擇「一個」(或其他選擇),我怎樣才能刪除這個連接字符串的某個部分?

例如:如果我按照「threeonetwo」的順序選擇了我想取消選擇「one」,我的標籤現在會顯示爲「threetwo」。

謝謝。

更新:這是我迄今爲止所做的,我卡住了。

第一:我創建了一個可變數組:

的NSMutableArray * toBeFilledTableData;

然後我分配它:

toBeFilledTableData = [[NSMutableArray裏的alloc] INIT];

然後,如果用戶選擇從表視圖的選項,我將添加一個對象:

[toBeFilledTableData ADDOBJECT:@「一個」];

我改變了我的想法,讓textfield顯示爲「threeonetwo」,我想在中間添加一個分號,所以我希望外觀是「三;一;二」。這樣生成的字符串在末尾添加一個分號:

的NSString * combinedForces

combinedForces = [toBeFilledTableData componentsJoinedByString:@ 「;」]; (^但那不是我的顯示分號所以我將僅僅添加分號ADDOBJECT [除非有另一種方式來做到這一點])

然後我顯示在我的文本字段對象:

textField.text = combinedForces;

因此,現在,1.我的列表不填充,因爲我點擊更多的選項,並在每個選項之間插入分號正成爲一個難題。我會很感激任何幫助=)

+0

根據您的新的更新編輯我的回答,請 –

回答

2

而不是刪除該部分的字符串,你可以維護一個數組或使用所選項目設置。

didSelectRowAtIndex路徑方法中,您將選定的字符串添加到數組(或將其刪除)並調用updateLabel方法,該方法根據數組或集合的內容創建一個字符串。

因此,每次發生更改時都會重新創建字符串。


如果你想知道選擇的順序,使用NSMutableOrderedSet,如果你不需要知道訂單,你可以使用一個NSMutableSet

+0

酷,我已經爲表視圖數組:NSArray的*資料表= [ NSArray arrayWithObjects:@「One」,@「Two」,@「Three」,nil]; 我不想從tableview中刪除任何東西,只是從標籤的外觀。我會怎麼做呢? –

+0

您爲選定的對象有單獨的數組。首先,它是空的,當選中一行時,將對象(字符串)添加到它,並在取消選擇後刪除它。 –

+0

這就是我所做的:我創建了我的可變數組:NSMutableArray * toBeFilledTableData; 然後我分配它:toBeFilledTableData = [[NSMutableArray alloc] init]; 然後我只添加了一個對象:[toBeFilledTableData addObject:@「one」]; 然後我將對象顯示爲我的標籤: textField.text = [toBeFilledTableData objectAtIndex:indexPath.row]; 它顯示得很好。現在,如果我想刪除它,我添加了代碼: [toBeFilledTableData removeObject:@「one」]; 問題:現在如何設置我的標籤? 因爲textField.text = [toBeFilledTableData objectAtIndex:indexPath.row];不起作用。 –

0

你能做到這一點,在didSelectRowAtIndexPath方法& didDeselectRowAtIndexPath下面的代碼

NSString *lblString = @""; 
    NSArray *indexPathArray = [self.tableView indexPathsForSelectedRows]; 
    for(NSIndexPath *index in indexPathArray) 
    { 
     NSString *subStr = [arrayDatasource objectAtIndex:index.row]; //perticular choice from your choice array 
     if([indexPathArray lastObject]!=index) 
     { 
      lblString = [lblString stringByAppendingString:[subStr stringByAppendingString:@";"]]; 
     } 
     else 
     { 
      lblString = [lblString stringByAppendingString:subStr]; 
     } 



    } 
+1

不要在兩種方法中都使用此代碼。將這些代碼放在它自己的方法中,並從兩個表視圖委託方法中調用它。您還應該使用可變字符串,而不是添加並重新分配不可變字符串。 – rmaddy