2014-08-27 51 views
0

我有我使用iOS:我試圖將選定的行(數據)發送到另一個控制器。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath 
{ 
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark; 
} 

針對其的tableview我有一個NSArray * selectedDiscounts我已經這樣分配

selectedDiscounts = [self.tableView indexPathsForSelectedRows]; 

我有將數據傳遞所選擇的錶行到另一個控制器,其中我將用選定的行填充tableView。

問題已選擇折扣要麼只保存選定的indexPaths而不能保存數據?因爲它顯示了所選對象的數量,但沒有顯示所選單元的數據。

我想將選定的行數據存儲到NSArray變量中。那可能嗎?多謝你們。

回答

0

您需要通過所有的索引路徑的迭代和自己獲取數據。

NSMutableArray *array = [[NSMutableArray alloc] init]; 

for (NSIndexPath *indexPath in selectedDiscounts) { 
    // Assuming self.data is an array of your data 
    [array addObject: self.data[indexPath.row]]; 
} 

現在你有你的NSArray包含你的數據,你可以傳遞給你的下一個控制器。

+0

Berube'謝謝先生,這工作完美。 – Ninja9 2014-08-27 18:12:07

0

您的selectedDiscounts陣列顯然正在填充UITableView方法indexPathForSelectedRows。要存儲選定行的實際數據,您需要首先建立一個數組allDiscounts,使用該數組填充第一個表視圖。然後,當你顯示所有從allDiscounts對象,並要選擇一些和存儲數據做到這一點:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     [selectedDiscounts addObject:[allDiscounts objectAtIndex:indexPath.row]]; 
} 
+0

試過這個,但我的所有折扣shiws我零。 :( – Ninja9 2014-08-27 17:00:21

+0

你確定你正在首次正確填充'allDiscounts'嗎? – angerboy 2014-08-27 17:03:23

+0

是的,我很確定我的所有折扣價值都掛在我的allDiscount NSArray對象上 – Ninja9 2014-08-27 18:01:59

0

我會處理這個問題的方法是在您要傳遞數據的視圖控制器上創建自定義初始化方法。事情是這樣的:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSArray *selectedDiscounts = yourDataSource[indexPath.row]; 
    NewViewController *newVC = [[NewViewController alloc] initWithSelectedDiscounts:selectedDiscounts]; 
    self.navigationController pushViewController:newVC animated:YES]; 
} 

的另一種方法是創建第二個視圖控制器是你想通過數組/字典,當他們選擇該行,獲得該行的信息上的屬性,以及在推送/呈現之前將其設置在視圖控制器上。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSArray *selectedDiscounts = yourDataSource[indexPath.row]; 
    NewViewController *newVC = [[NewViewController alloc] initWith...// whatever you use for the initializer can go here... 
    newVC.discounts = selectedDiscounts; 
    self.navigationController pushViewController:newVC animated:YES]; 
} 
相關問題