2012-09-29 31 views
1

我想從表視圖控制器獲取一個值並將其發送到另一個表視圖控制器。從表中取值使用didSelectRowAtIndexPath

我想通過我在那裏用

UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath]; 
NSString *num=cell.textLabel.text; 

這裏的問題是,該單元格包含數字和字符串,但我只想要數量的方法didSelectRowAtIndexPath去實現它。
有沒有辦法只獲得數字?

+3

數字是如何放入細胞的?你最好從「dataSource」獲取它,而不是試圖從單元格中讀取它。 –

+0

文本是否爲特定格式?然後你可以使用[num substringWithRange:NSMakeRange()]或者使用[oldTimezone componentsSeparatedByString:@「」]來創建一個數組。 – Ron

+0

im插入數據:cell.textLabel.text = [NSString stringWithFormat:@「%d%@」,vc.Number,vc.Address];結果我的表格在每個單元格中都有一個數字和一個地址。當我按一個特定的單元格時,我只需要取這個特定單元格的編號。但NSString * num = cell.textLabel.text同時返回數字和地址 –

回答

-3

不是試圖從文本標籤中提取它,而是將單元格的標記值設置爲cellForRowAtIndexPath方法中的數字,並在方法didSelectRowAtIndexPath中使用它。

的cellForRowAtIndexPath

cell.tag = vc.Number; 

didSelectRowAtIndexPath方法

UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath]; 
NSUInteger num=cell.tag; 
4

有幾乎沒有理由我能想到的地方嘗試存儲有關標籤或你的意見標籤內數據信息是一個好主意。它使程序難於編寫,也難以理解。相反,使用提供數據的相同方法放在視圖中。這裏有一個例子:

- (void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    id dataObject = [self dataForIndexPath:indexPath]; // assuming you called this in ..cellForRow... to provide the "vc" instance you mentioned in your comment 
    int value = dataObject.number; 
    //Now go do work with the value you extracted. 
} 

這種方法dataForIndexPath:只是代表做了讓你在您的評論被稱爲是爲用於填充表格單元格的標籤的數據源vc實例的工作。請注意,此方法根本不訪問視圖 - 它正確地轉到數據的原始來源以獲取您所需的內容。與其他解決方案不同,這也適用於任何類型的數據,而不僅僅是整數。

希望這有助於,並讓我知道如果您有任何問題!

+1

+1。標籤對於存儲狀態的擴散是可憎的。 – Abizern