веб-представление не обновляется при выталкивании из табличного представления - PullRequest
0 голосов
/ 24 июня 2011

Мое текущее приложение состоит из Навигации с Вкладками, а затем между Табличным Представлением, из Строк Таблицы, когда выбирается Детальное Представление. Проблема, с которой я сталкиваюсь, заключается в том, что при выборе строки она перемещается в подробный вид и загружает HTML-файл в веб-представление. Однако, когда я возвращаюсь назад и затем выбираю другую строку, он загружает тот же HTML-код из предыдущего выбора. Единственное, что остается актуальным - это заголовок в строке заголовка навигации.

Это плохое управление памятью с моей стороны (я новичок в ObjC .. как только через неделю) или я пропустил шаг? Я думаю, что я захватил NSString * navDate = self.title; это моя проблема Все остальное в принципе работает иначе. В любом случае, будьте нежны и спасибо. : $

Таблица Cell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellID = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellID];
if(cell == nil){
    cell = [[UITableViewCell alloc] 
            initWithStyle:UITableViewCellStyleDefault
            reuseIdentifier:CellID];
}
cell.textLabel.font = [UIFont systemFontOfSize:15];
cell.textLabel.text = [self.dateList objectAtIndex: [indexPath row]];
return cell;
}

Row Push

(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger row = [indexPath row];
if(self.aTextController == nil){
    ATextController *aTextDetail = [[ATextController alloc] initWithNibName:@"ArchiveData" bundle:nil];
    self.aTextController = aTextDetail;
    [aTextDetail release];
}
aTextController.title = [NSString stringWithFormat:@"%@", [dateList objectAtIndex:row]];
SLESDAppDelegate *delegate = (SLESDAppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.navigationController pushViewController:aTextController animated:YES];
}

DetailView

- (void)viewDidLoad
{
[super viewDidLoad];
NSString *navDate = self.title;
NSString *null = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@", navDate] ofType:@"html"];
if(null != nil){
    [webArchView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@", navDate] ofType:@"html"]isDirectory:NO]]]; }
else {
    [webArchView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"error" ofType:@"html"]isDirectory:NO]]];
}
}

1 Ответ

0 голосов
/ 24 июня 2011

Поскольку вы сохраняете экземпляр ATextController и используете его повторно, вам придется выполнить следующий фрагмент в viewWillAppear: -

NSString *navDate = self.title;
NSString *null = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@", navDate] ofType:@"html"];
if(null != nil){
    [webArchView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@", navDate] ofType:@"html"]isDirectory:NO]]]; }
else {
    [webArchView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"error" ofType:@"html"]isDirectory:NO]]];
}

. Причина в том, что viewDidLoad вызывается один раз, когдаКонтроллер представления загружает свой вид.viewWillAppear: будет вызываться каждый раз, когда представление собирается появиться на экране.

...