2014-12-31 2 views
-1

У меня проблема с контроллером панели вкладок. Мое приложение состоит из контроллера панели вкладок с двумя видами. В первом я вставляю запись в базу данных sqlite, а во втором - табличное представление, содержащее все записи базы данных. Я хотел бы, чтобы при вставке новой записи в db, представление таблицы было обновлено. Это происходит только в методе viewDidLoad, а именно только один раз. Есть ли способ узнать, когда элемент панели вкладок изменяется, а затем обновлять таблицу? Я попытался использовать свойства: создать объект класса ViewController и получить доступ к свойству другого ViewController ... но я не мог. БлагодаряКак управлять панелью вкладок

//Insert new record view 

sqlite3_stmt *statement; 
const char*dbpath=[databasePath UTF8String]; 

if(sqlite3_open(dbpath, &DB) == SQLITE_OK) 
{ 

    NSString *insertSQL=[NSString stringWithFormat:@"INSERT INTO Example(Id, name) VALUES (?,?)"]; 

    const char *insert_stmt=[insertSQL UTF8String]; 

    if(sqlite3_prepare(DB, insert_stmt, -1, &statement, NULL) == SQLITE_OK) 
    { 
     sqlite3_bind_text(statement, 1, [id UTF8String], -1, SQLITE_TRANSIENT); 
     sqlite3_bind_text(statement, 2, [name.text UTF8String], -1, SQLITE_TRANSIENT);  
    } 


    if(sqlite3_step(statement) == SQLITE_DONE) 
    { 
     NSLog(@"OK"); 
    } 
    else 
    { 
     NSLog(@"Error"); 
    } 

    sqlite3_finalize(statement); 
    sqlite3_close(DB); 
} 
else 
{ 
    NSLog(@"Error"); 
} 

SecondViewController *svc=[SecondViewController alloc] initWithNibname:@"Second" bundle:nil]; 
[svc.tableView reloadData]; 
+0

Можете ли вы опубликовать некоторые из связанных кодов, чтобы мы могли точно видеть, что вы делаете? – Chris

+0

Я не знаю, что писать ... потому что это общая проблема ... –

+0

Просто отправьте свой код, чтобы мы могли ответить на ваш вопрос и помочь будущим пользователям. –

ответ

0

В конце, когда вы вставив запись в БД, вы можете отправить уведомление, что будет предупреждать SecondViewController

Начало заменой

SecondViewController *svc=[SecondViewController alloc] initWithNibname:@"Second" bundle:nil]; 
[svc.tableView reloadData]; 

С:

[[NSNotificationCenter defaultCenter] postNotificationName:@"DidUpdateDatabase" object:self]; 

И в viewDidLoad из SecondViewController добавить этот блок для прослушивания изменений:

[[NSNotificationCenter defaultCenter] addObserverForName:@"DidUpdateDatabase" 
                object:nil 
                queue:[NSOperationQueue currentQueue] 
               usingBlock:^(NSNotification *note) { 
                [self.tableView reloadData]; 
               }]; 

Это называется шаблон уведомления, который позволяет объектам быть отделены друг от друга и по-прежнему держать связь.

EDIT:

Другим решением является в SecondViewController «s viewDidAppear вызова [self.tableView reloadData]. Это заставит его перезагружаться каждый раз, когда пользователь переходит к этому представлению.

+0

Да! Отлично! Это метод, который я искал! Большое спасибо за вашу помощь! –

Смежные вопросы