我尝试使用Google登录中的用户信息填充tableview。
以下是我试图填充的表格视图的一部分。基本上,名字,姓氏和电子邮件:
- (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)
我假设您在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];
}
}
答案 1 :(得分:0)
当您收到谷歌数据存储时,该数据在一个数组中。 之后,只需在数据存储在数组中的方法中重新加载表
你的表格结构应该是这样的
#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;
}
您可以在此处详细了解如何在表格单元格上显示数据
答案 2 :(得分:0)
从您的评论到答案,您似乎在TableView
内有UIViewController
。
要解决此问题,您可以尝试:
TableView
UIViewController
tableView
创建一个IBOutlet
TableView
' s dataSource
和delegate
设置为UIViewController
firstName
方法获取lastName
,email
和tableView:numberOfRowsInSection:
返回3 。[self.tableView reloadData]
放在signIn:didSignInForUser:
方法希望这有帮助。