Динамически добавлять ячейки табличного представления одну за другой нажатием кнопки в одном табличном представлении

я. Я много пробовал, но не смог успешно выполнить. II. В ячейке tableview необходимо отобразить 3 3 поля. Один вид изображения, кнопка 1 --> кнопка фотографирования, кнопка 2 ---> кнопка обзора. III. Первое представление таблицы должно отображать пользовательскую ячейку с одной строкой. IV. Когда пользователь нажимает «добавить новую кнопку», которая находится за пределами таблицы, будет создана новая строка со всеми вышеперечисленными 3 полями (представление изображения, кнопка 1, кнопка 2) v. Количество нажатий кнопки «добавить новую кнопку» создаст новые строки со всеми вышеперечисленными 3 полями. ви. Я мог бы делать все вышеперечисленные вещи, созданные динамически успешно, с простым представлением изображения, которое содержит 3 поля выше, но не смог работать с пользовательской ячейкой.

vii. Опять же, мне нужно установить тег каждой ячейки, кнопку просмотра, кнопку «Сделать фото», чтобы при нажатии принималось значение тега.


person Ajeet    schedule 09.06.2015    source источник
comment
Вы должны быть более четкими, чем это. Пожалуйста, обратитесь к другим вопросам, размещенным здесь, и измените свой вопрос.   -  person Adithya    schedule 09.06.2015


Ответы (1)


Табличное представление работает путем добавления делегата и источника данных. Предполагая, что у вашего табличного представления есть владелец в качестве контроллера представления, а делегат и источник данных являются самим контроллером представления. Все, что вам нужно сделать, это реализовать эти методы источника данных для возврата соответствующих данных, затем вы должны вызвать reloadData в представлении таблицы или, если вы хотите немного дополнительной работы, чтобы выглядеть лучше, проверьте, как добавить строки, анимированные в Интернете.

Это очень простой и неоптимизированный пример, но очень короткий и легко читаемый. Я надеюсь, что это поможет вам встать на правильный путь:

@interface MyViewController()<UITableViewDataSource, UITableViewDelegate>

@property UITableView *tableView;
@property NSArray *myCells;

@end

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tableView.delegate = self; // could be done in storyboard
    self.tableView.dataSource = self; // could be done in storyboard
    [self addACell];
}
- (void)addCellButtonPressed:(id)sender {
    [self addACell];
}
- (void)addACell {
    MyCell *cell = [[MyCell alloc] init];
    [cell.button1 addTarget:self action:@selector(cellButton1Pressed:) forControlEvents:UIControlEventTouchUpInside];
    [cell.button2 addTarget:self action:@selector(cellButton2Pressed:) forControlEvents:UIControlEventTouchUpInside];
    self.myCells = [self.myCells arrayByAddingObject:cell];
    [self.tableView reloadData]; // will call the delegate again and refresh cells
}
- (void)cellButton1Pressed:(id)sender {
    MyCell *cellPressed = nil;
    for(MyCell *cell in self.myCells) {
        if(cell.button1 == sender) {
            cellPressed = cell;
            break;
        }
    }
    // do whatever
}
- (void)cellButton2Pressed:(id)sender {
    MyCell *cellPressed = nil;
    for(MyCell *cell in self.myCells) {
        if(cell.button2 == sender) {
            cellPressed = cell;
            break;
        }
    }
    // do whatever
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.myCells.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    return self.myCells[indexPath.row];
}

@end
person Matic Oblak    schedule 09.06.2015