Я использую DTGridView от DTKit от Daniel Tull. Я реализовал его в очень простом ViewController, и тест, который я делаю, - это поместить кнопку в последнюю строку сетки, которая должна добавить еще одну строку в сетку (и для этого перемещение кнопки в строку под ней).DTGridView потерять контент при прокрутке
Проблема в том, что, когда я нажимаю кнопку несколько раз, а затем начинаю прокрутку, сетка, кажется, теряет содержимое. Поскольку я не полностью уверен, что это ошибка в сетке, но больше в моем коде, я надеюсь, вы, ребята, можете помочь мне и отследить ошибку.
Во-первых у меня есть заголовочный файл, который довольно просто, потому что это тест:.
#import <UIKit/UIKit.h>
#import "DTGridView.h"
@interface TestController : UIViewController <DTGridViewDelegate, DTGridViewDataSource>
{
DTGridView* thumbGrid;
}
@end
объявляет DTGridView, который будет моя сеткой, где я хочу поставить содержание в
Теперь мой код файла:
#import "TestController.h"
@implementation TestController
int rows = 1;
- (NSInteger)numberOfRowsInGridView:(DTGridView *)gridView
{
return rows;
}
- (NSInteger)numberOfColumnsInGridView:(DTGridView *)gridView forRowWithIndex:(NSInteger)index
{
if (index == rows - 1)
return 1;
else
return 3;
}
- (CGFloat)gridView:(DTGridView *)gridView heightForRow:(NSInteger)rowIndex
{
return 57.0f;
}
- (CGFloat)gridView:(DTGridView *)gridView widthForCellAtRow:(NSInteger)rowIndex column:(NSInteger)columnIndex
{
if (rowIndex == rows - 1)
return 320.0f;
else
return 106.6f;
}
- (DTGridViewCell *)gridView:(DTGridView *)gridView viewForRow:(NSInteger)rowIndex column:(NSInteger)columnIndex
{
DTGridViewCell *view = [[gridView dequeueReusableCellWithIdentifier:@"thumbcell"] retain];
if (!view)
view = [[DTGridViewCell alloc] initWithReuseIdentifier:@"thumbcell"];
if (rowIndex == rows - 1)
{
UIButton* btnLoadMoreItem = [[UIButton alloc] initWithFrame:CGRectMake(10, 0, 301, 57)];
[btnLoadMoreItem setTitle:[NSString stringWithFormat:@"Button %d", rowIndex] forState:UIControlStateNormal];
[btnLoadMoreItem.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];
[btnLoadMoreItem setBackgroundImage:[[UIImage imageNamed:@"big-green-button.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal];
[btnLoadMoreItem addTarget:self action:@selector(selectLoadMoreItems:) forControlEvents:UIControlEventTouchUpInside];
[view addSubview:btnLoadMoreItem];
[btnLoadMoreItem release];
}
else {
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(10,0,100,57)];
label.text = [NSString stringWithFormat:@"%d x %d", rowIndex, columnIndex];
[view addSubview:label];
[label release];
}
return [view autorelease];
}
- (void) selectLoadMoreItems:(id) sender
{
rows++;
[thumbGrid setNeedsDisplay];
}
- (void)viewDidLoad
{
[super viewDidLoad];
thumbGrid = [[DTGridView alloc] initWithFrame:CGRectMake(0,0, 320, 320)];
thumbGrid.dataSource = self;
thumbGrid.gridDelegate = self;
[self.view addSubview:thumbGrid];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (void)dealloc {
[super dealloc];
}
@end
Я реализовать все методы для DataSource, который, кажется, работает. Сетка заполнена таким количеством строк, что и мои «строки» (+1). Последняя строка НЕ содержит 3 столбца, но только одну. Эта ячейка содержит кнопку, которая (при нажатии) добавляет 1 к целому числу «rows».
Проблема начинается, когда начинается повторное использование ячеек (я угадываю) и начало содержимого исчезает. Когда я прокручиваю резервные копии, UILabels, которые я помещаю в ячейки, исчез.
Есть ошибки, код ошибки, ошибки, тупик-переезд Мне здесь не хватает? Надеюсь, кто-нибудь может помочь.
Привет, Даниил, спасибо, что ответили. Я попытался сделать это (это была моя первая попытка), но это вызывает мерцание в сетке и не решает проблему. –
У меня такая же проблема, и reloadData не работает :(( –