Как установить первую строку таблицы просмотра, отмеченную при запуске приложения? Я имею в виду, когда я запускаю приложение сейчас, в таблице есть несколько строк, и когда я нажимаю на некоторые из них, его аксессуар меняет флажок. Когда вы нажимаете другой, другой появляется на флажке, а предыдущая галочка исчезает. Итак, теперь я хочу, чтобы первая строка tableview была отмечена галочкой при запуске приложения, а затем, когда я нажимаю другую строку, это «снять отметку» и «галочку» с новой строкой и т. Д.Default CellAccessory
ответ
Попробуйте варианты, предложенные в этих постах how to apply check mark on table view in iphone using objective c? или iPhone :UITableView CellAccessory Checkmark
В основном вам нужно следить за флажки с помощью скажу словарь или около того. И в методе viewDidLoad
или init
сделайте первую ячейку, указанную в словаре. При рисовании ячеек всегда проверяйте, отмечена ли соответствующая запись в словаре или нет, и соответствующим образом отобразите галочку. Когда пользователь нажимает на ячейку, измените значение в словаре на отметку/непроверенную.
Обновление: Вот пример кода.
В файле .h объявить свойство, как
@property(nonatomic) NSInteger selectedRow;
Затем используйте код ниже,
- (void)viewDidLoad {
//some code...
self.selectedRow = 0; //if nothing should be selected for the first time, then make it as -1
//create table and other things
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// create cell and other things here
if (indexPath.row == self.selectedRow)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// some other code..
if (indexPath.row != self.selectedRow) {
self.selectedRow = indexPath.row;
}
[tableView reloadData];
}
Вы можете установить целое число в переменную, аналогичную «checkedCell», присваивает этому значению значение по умолчанию ячейке 0, а в поле cellForRowAtIndexPath
проверяет, проверена ли ячейка, если она не изменяет аксессуар, чтобы проверить его и обновить переменную.
-(void)viewWillAppear{
currentCheckedCell = 0;
}
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//
// Create cells -- if indexpath.row is equal to current checked cell reload the table with the correct acessories.
//
static NSString *cellIdentifier = @"RootMenuItemCell";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
for (UIView *view in nibContents) {
if ([view isMemberOfClass:[MyCell class]]) {
cell = (MyCell *)view;
break;
}
}
//OTHER CELL CREATION STUFF HERE
// cell accessory
UIImage *accessory = [UIImage imageNamed:@"menu-cell-accessory-default.png"];
UIImage *highlighted = [UIImage imageNamed:@"menu-cell-accessory-selected.png"];
if(indexPath.row == currentCheckedCell){
//DEFAULT ACCESSORY CHECK
// cell.accessoryType = UITableViewCellAccessoryCheckmark;
UIImageView *accessoryView = [[UIImageView alloc] initWithImage:accessory highlightedImage:highlighted];
}else{
//DEFAULT ACCESSORY NONE
// cell.accessoryType = UITableViewCellAccessoryNone;
UIImageView *accessoryView = [[UIImageView alloc] initWithImage:accessory highlightedImage:accessory];
}
[cell setAccessoryView:accessoryView];
}
return cell;
}
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//UPDATE SELECTED CELL & RELOAD TABLE
currentCheckedCell = indexPath.row;
[self.tableview reloadData];
}
Также стоит отметить, что в моих примерах используются пользовательские изображения для аксессуаров. Если вы посмотрите ссылку @ACB, вы найдете очень похожую концепцию.
Вы можете использовать,
if (firstCellSelected)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
Установите firstCellSelected
флаг в viewDidLoad
методе ,
- 1. Не удается обновить cellaccessory в didSelectRowAtIndexPath
- 2. Spring default default default
- 3. android default default default sms app
- 4. constexpr default default constructors
- 5. mysql Workbench insert default default
- 6. Default SynchronizationContext vs Default TaskScheduler
- 7. Git core.autocrlf line finished default default
- 8. Как принудительно использовать событие default default
- 9. default mysql.sock
- 10. Magento использует default/default как тему темы в новостном бюллетене вместо темы темы default/my_theme?
- 11. axWrapper want's NpapiPluginModule :: Default = module - Где «:: Default» ушел?
- 12. React: export const + export default vs export default
- 13. Что касается расширений Struts-Default и json-default
- 14. У iPhone нет файлов Default-Portrait.png и Default-Landscape.png?
- 15. Как установить $ default store id или default website в magento
- 16. android default keyboard layout
- 17. errorplacement default style
- 18. ComboBox default item
- 19. MVC Default Connection
- 20. Kotlin lazy default property
- 21. Default Picker Value iphone
- 22. jquery autocomplete default
- 23. Dreamweaver CS6 Default Colors.xml
- 24. ASP.NET MVC Default route?
- 25. no default browser set
- 26. set default database
- 27. Javascript: Остановить onClick default
- 28. jquery datepicker date default
- 29. bad default python command
- 30. Свойство default для cells()
Как именно сохранить этот трек с галочками? – TomasJ
Существует несколько способов, которыми это можно сделать. Один из примеров здесь. Http://joshgrenon.com/2009/07/20/iphone-development-how-to-create-checkmarks-in-a-uitableview/ ... Я обновил ответ другим способом, чтобы сделать это – iDev
вы можете использовать 'reloadData' в' tableView' в 'ViewDidLoad', если вы создаете его с IB –