2015-07-03 2 views
2

Я пытаюсь заполнить таблицу с информацией о пользователе из входа Google.Заполнение таблицы с информацией о пользователе с помощью Google Войти

Вот часть таблицы, которую я пытаюсь заполнить. В основном, Имя, Фамилия и E-mail:

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

    long section = [indexPath section]; 
    long row = [indexPath row]; 

    if (section == 0) { 
    // Section: Details 
    if (tableView.editing) { 
    if (row == 0) { 
    // Row: First Name 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"FirstNameCell"]; 
    cell.detailTextLabel.text = manager.currentAccount.firstName; 
    return cell; 
    } else if (row == 1) { 
    // Row: Last Name 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"LastNameCell"]; 
    cell.detailTextLabel.text = manager.currentAccount.lastName; 
    return cell; 
    } else if (row == 2) { 
    // Row: Email 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EmailCell"]; 
    cell.detailTextLabel.text = manager.currentAccount.email; 
    return cell; 

    ... 

Я считаю, что метод, где я извлечения информации о пользователе здесь:

- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user 
    withError:(NSError *)error { 
    // Perform any operations on signed in user here. 
    NSString *userId = user.userID;     // For client-side use only! 
    NSString *idToken = user.authentication.idToken; // Safe to send to the server 
    NSString *name = user.profile.name; 
    NSString *email = user.profile.email; 
    // ... 

Я просто не знаю, как заполнять табличный вид. Или это должно быть сделано автоматически с помощью входа в Google?

+0

Вы можете получить входные данные? –

+0

Я не уверен, что я или нет. Я просто думаю, что документации недостаточно. – Paul

+1

Поместите контрольную точку в свой метод делегата 'didSignInForUser'. Затем вы можете проверить объект пользователя и посмотреть, есть ли у вас данные входа. –

ответ

0

Я предполагаю, что вы сохраняете данные пользователя после входа в manager.currentAccount

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

- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user 
    withError:(NSError *)error 

должен выглядеть следующим образом:

- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error { 
    if (error == nil) { 
     // Populating data to manager.currentAccount from (GIDGoogleUser *)user 
     // .... 
     // .... 

     [self.tableView reloadData]; 
    } 
} 
+0

Когда я добавляю '[self.tableView reloadData];' в это метод, я получаю сообщение об ошибке. ОШИБКА: свойство 'tableView' не найдено в объекте 'LoginViewController'. Я также попытался добавить его к методу 'cellForRowAtIndexPath', но он говорит:« Код никогда не будет выполнен » – Paul

0

когда вы получили Google хранилище данных, данных в одном массиве. после этого просто перезагрузить таблицу в способе, в котором хранятся данные в массиве

ваша таблица structore должна быть, как это

#pragma matk table delegates 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return array.count; 
} 

пытаются создать пользовательскую ячейку, чтобы показать информацию сгружен с Google Войти

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    MyTournamentsTableCell *cell = (MyTournamentsTableCell *)[tableView dequeueReusableCellWithIdentifier:[MyTournamentsTableCell reuseIdentifier]]; 
    if (cell == nil) { 
     [[NSBundle mainBundle] loadNibNamed:@"MyTournamentsTableCell" owner:self options:nil]; 

     } 
return cell; 

} 

вы можете прочитать здесь о том, как показывают данные по ячейке таблицы

show data on table

table view tutorial

0

Ваш комментарий к ответам, кажется, что у вас есть TableView внутри UIViewController.

Чтобы исправить это, вы можете попробовать:

  • Создание IBOutlet для этого TableView в вашем UIViewController называется tableView
  • Установите TableView «s dataSource и delegate к этим UIViewController
  • Так как вы хотите получить только firstName, lastName, и emailвозвращение 3 от tableView:numberOfRowsInSection: метод.
  • Место [self.tableView reloadData] внутри signIn:didSignInForUser: метод

Надеется, что это помогает.

+0

Извините, но я все еще получаю сообщение об ошибке, когда я делаю' [self.tableView reloadData] 'inside' signIn: didSignInForUser : '. Я создал и IBOutlet, но не уверен, что я сделал «Установить DataSource TableView и делегировать этот UIViewController» – Paul

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