2016-02-09 58 views
0

我使用自定義單元創建了一個UITableView。我得到5個細胞,裏面有PickerView,另一個細胞有UITextField獲取UITableView中的所有自定義UICell屬性

我想要獲得這些單元格的所有屬性值,當我點擊一個按鈕(意思是UITextField textUIPickView值)。

到目前爲止,我嘗試了self.mainTableView visibleCells,我確實獲得了一些信息,但沒有提到我的細胞的屬性值。

有什麼辦法讓所有的值放到我的單元格中嗎?

回答

0

使用雙你可以有每一個細胞:

for (int i = 0; i < [self.mainTableView numberOfSections]; i++) { 
    for (int j = 0; j < [self.mainTableView numberOfRowsInSection:i]; j++){ 
     UITableViewCell *cell = [self.mainTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:j inSection:i]] 
     // Get your value 
    } 
} 

但你必須檢查的tableView的「重用設置」。

+0

謝謝你,但我不明白你的意思是「重用設置」。這是關於我創建我的細胞的方式嗎? –

+0

是的,如果您使用'dequeueReusableCellWithIdentifier:'來創建單元格,那麼一旦單元格消失,您將丟失值。 – Matt39

0

您應該在單元格和執行操作的類之間創建連接(在按鈕上點擊)。 這可能是一些委託或通知有關更改textFields或UIPicker值的代碼塊。

@protocol SomeCustomCellDelegate <NSObject> 

- (void)onValueChanged:(NSString *)value atCell:(UITableViewCell *)cell 

@end 

直接通過單元循環是一個壞主意,因爲它不安全。

+0

感謝您的回覆,我爲我的6個細胞使用了同一個班級,猜測我是否按照您的方式來設置cell.tag? –

+0

不,您可以通過使用tableView的[indexPathForCell:](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/#//apple_ref/occ/instm/UITableView/獲取單元格的NSIndexPath indexPathForCell :)方法。 –