Как сбросить массив в многовидовом приложении для iphone - PullRequest
0 голосов
/ 16 июля 2010

Я пытаюсь получить табличное представление, которое приводит к другому табличному виду, элементы списка которого зависят от первого представления.У меня правильно настроена база данных, и моя проблема в том, что когда я выбираю один элемент на первой странице и впервые перехожу ко второму виду, он работает нормально, но когда я возвращаюсь на первую страницу и снова возвращаюсь ко второму видув списке все еще есть старые значения, загруженные новыми.Есть ли способ уничтожить массив и воссоздавать его каждый раз, когда загружается второе представление?Где бы я это сделал?

Вот где мой массив инициализирован в делегате:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

 [self copyDatabaseIfNeeded];

 organArray = [[NSMutableArray alloc] init]; 
 procedureArray = [[NSMutableArray alloc] init];

 [Organ getInitialDataToDisplay:[self getDBPath]];

    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];

    return YES;
}

Вот где данные добавляются в массив в моем пользовательском классе:

    + (void) getDatabase:(NSString *)dbPath WithOrganID:(NSNumber *)organID
{

 RadiologyAppAppDelegate *appDelegate = (RadiologyAppAppDelegate *)[[UIApplication sharedApplication] delegate];

 if(sqlite3_open([dbPath UTF8String],&database) == SQLITE_OK){

  const char *sql = "select * from Organ";
  sqlite3_stmt *selectstmt;

  if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK){

   while (sqlite3_step(selectstmt) == SQLITE_ROW) {

    NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);

    Procedure *procedureObj = [[Procedure alloc] initWithPrimaryKey:primaryKey];
    procedureObj.procedureName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,1)];
    procedureObj.procedureID = sqlite3_column_int(selectstmt,0);

    [appDelegate.procedureArray addObject: procedureObj];

    [procedureObj release];
   }
  }
 }
 else
  sqlite3_close(database);
}

Наконец, вот мой контроллер вида:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

 static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

 Procedure *procedureObj = [appDelegate.procedureArray objectAtIndex:indexPath.row];
 PVCprocedureObj = appDelegate.procedureArray;

 cell.textLabel.text = procedureObj.procedureName;

 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    return cell;

}

Спасибо за помощь!

1 Ответ

0 голосов
/ 16 июля 2010

Я бы передал объект данных (данные, которые будут показаны во второй таблице) во второй контроллер. Я думаю, что это самый простой подход, и вы не показываете эту часть. Передача объекта при щелчке по ячейке внутри: - tableView: didSelectRowAtIndexPath: а не при создании ячейки: Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...