В пользовательской кнопке есть кнопка. Нажав на нее, он будет выбран/не выбран. Но в TableView, нажав на кнопку в первой ячейке, мне нужно сбросить выделение на остальных. Как я могу это сделать?Пользовательские ячейки и кнопки
ответ
Ну, это легко решить вашу проблему с помощью делегата.
Создать протокол где-то любопытный:
@protocol CustomCellDelegate <NSObject>
@optional
- (void)handleSelection:(NSIndexPath) indexPath;
@end
В классе вашей пользовательской ячейки создать свойства и FUNC:
@property (nonatomic, weak) id <CustomCellDelegate> delegate;
@property (nonatomic, retain) NSIndexPath *selectedIndexPath;
- (void) handleTap
{
[self.delegate handleSelection:self.selectedIndexPath];
}
Тогда в классе стал абонентом вашего взгляда контроллера для CustomCellDelegate и добавить свойство «выбрано» indexPath:
@property (nonatomic, retain) NSIndexPath *currentlySelectedIP;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// your custom cell stuff
customCell.selected = NO;
customCell.delegate = self;
[customCell.yourButton addTarget:self action:@selector(handleTap) forControlEvents:UIControlEventTouchUpInside];
customCell.selectedIndexPath == indexPath;
if (self.currentlySelectedIP != nil) && (self.currentlySelectedIP == indexPath)
{
customCell.selected = YES; // handle stuff for selected cell/button, whatever
}
}
и обрабатывать делегатский f :
- (void) handleSelection:(NSIndexPath) indexPath
{
self.currentlySelectedIP == indexPath;
[self.tableView reloadData];
}
Вы можете получить всю ячейку из UITableView. После того, как вы получите все ячейки из UITableView, вы можете легко получить все подпункты из ячейки и кнопку сброса из него.
Вы можете сделать это вот так.
- Когда пользователь нажимает на любую кнопку, сначала отмените выбор всех кнопок.
- Затем выберите кнопку, которую вы нажали.
Вот код. Это должно быть записано в методе нажатия кнопки пользовательской ячейки.
for (UIView *theView in self.subviews)
{
if ([theView isKindOfClass:[UIView class]])
{
for (UIButton *theButton in theView.subviews)
{
if ([theButton isKindOfClass:[UIButton class]])
{
[theButton setSelected:NO];
}
}
}
}
Надеюсь, это поможет.
Если вам нужно сбросить все кнопки, нажав любую кнопку ячейки таблицы, тогда в любой момент будет выбрана только одна кнопка. Затем вы можете сохранить ссылку на выбранную ячейку таблицы в контроллере и сбросить ее.
Если вы хотите сбросить все кнопки, нажав кнопку ячейки первой строки, затем получите все видимые ячейки и сбросьте эти ячейки. Все остальные ячейки должны быть сброшены при возвращении вида ячейки из метода источника данных.
Вам необходимо реализовать делегат, чтобы получить уведомление о нажатии кнопки на любую ячейку.
положить это в ваш метод cellforrowatindex
if([totalcheckmarkArray containsObject:[NSString stringWithFormat:@"%d",(int)indexPath.row]])
{
[cell.btnCheckbox setImage:[UIImage imageNamed: @"chk_check"] forState:UIControlStateNormal];
}
else
{
[cell.btnCheckbox setImage:[UIImage imageNamed:@"chk_uncheck"]forState:UIControlStateNormal];
}
cell.btnCheckbox.tag=indexPath.row;
[cell.btnCheckbox addTarget:self action:@selector(checkBoxClicked:) forControlEvents:UIControlEventTouchUpInside];
Теперь Когда кнопка нажата в определенном положении необходимо вызвать метод ниже ..
#pragma mark CheckBox Actions
-(void)checkBoxClicked:(id)sender{
UIButton *tappedButton = (UIButton*)sender;
int totalSection = (int)self.tableview.numberOfSections;
int totalRow = 0;
if (tappedButton.tag==0) {
[totalcheckmarkArray removeAllObjects];
[indexarray removeAllObjects];
SelectedCateCount=0;
NSLog(@"%d",SelectedCateCount);
}
else {
if([tappedButton.currentImage isEqual:[UIImage imageNamed:@"chk_check"]])
{
SelectedCateCount-=1;
[totalcheckmarkArray removeObject:[NSString stringWithFormat:@"%d",(int)tappedButton.tag]];
[indexarray removeObject:[arrSelectedCategory objectAtIndex:tappedButton.tag]];
}
else
{
SelectedCateCount+=1;
[totalcheckmarkArray addObject:[NSString stringWithFormat:@"%d",(int)tappedButton.tag]];
[indexarray addObject:[arrSelectedCategory objectAtIndex:tappedButton.tag]];
}
NSLog(@"%d",SelectedCateCount);
if (SelectedCateCount==arrSelectedCategory.count-1) {
CellCategory *cell = (CellCategory *)[self.tableview cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
[cell.btnCheckbox setImage:[UIImage imageNamed:@"chk_check"] forState:UIControlStateNormal];
[totalcheckmarkArray addObject:[NSString stringWithFormat:@"%d",(int)cell.btnCheckbox.tag]];
}
else{
CellCategory *cell = (CellCategory *)[self.tableview cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
[cell.btnCheckbox setImage:[UIImage imageNamed:@"chk_uncheck"] forState:UIControlStateNormal];
[totalcheckmarkArray removeObject:[NSString stringWithFormat:@"%d",(int)cell.btnCheckbox.tag]];
}
}
[_tableview reloadData];
NSLog(@"%@",indexarray);
}
Теперь согласно вашему требованию изменения в флажком щелкнул метод
- 1. Кнопки пользовательские ячейки
- 2. Как создать две пользовательские кнопки ячейки таблицы?
- 3. UITableView и пользовательские ячейки
- 4. TableView и пользовательские ячейки
- 5. dequeueReusableCellWithIdentifier и пользовательские ячейки
- 6. deleteRowsAtIndexPaths сбрасывает пользовательские ячейки
- 7. Пользовательские виды или пользовательские ячейки
- 8. Пользовательские таблицы или кнопки?
- 9. Клавиатура iOS и пользовательские кнопки
- 10. Как получить значения UITableviewcell (пользовательские ячейки) при нажатии кнопки
- 11. Пользовательские ячейки в NSTableView
- 12. Пользовательские ячейки таблицы отображения
- 13. Swift настроить пользовательские ячейки
- 14. Пользовательские ячейки, повторяющиеся
- 15. NSTableView пользовательские ячейки
- 16. UITableView - пользовательские неиспользуемые ячейки
- 17. Пользовательские вопрос UITableView ячейки
- 18. Основные данные пользовательские ячейки
- 19. Пользовательские кнопки UITableViewCell и RowSelected (iOS/Monotouch)
- 20. Пользовательские ячейки для каждой ячейки JavaFX
- 21. UITableView пользовательские ячейки, управление прокруткой и памятью
- 22. Пользовательские ячейки и индикаторы удаления/перемещения
- 23. Пользовательские ячейки и проблемы с UITableViewCell
- 24. пользовательские ячейки с drawRect: и setNeedsDisplay методы
- 25. Разработка iOS Быстрые пользовательские ячейки
- 26. Пользовательские ячейки заменяются на другие ячейки
- 27. Пользовательские Tableview ячейки не показывая
- 28. iPhone Пользовательские ячейки с UISegmentedControl
- 29. UITableView пользовательские ячейки IBOutlets - nil
- 30. Android Пользовательские кнопки Image
Как я могу получить всю ячейку? – Leonid
NSArray * cells = [tableView visibleCells] –