gpt4 book ai didi

iphone - 如何在一个单元格(tableView)中显示两个对象?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:28 26 4
gpt4 key购买 nike

我遇到了一个小问题。我创建了一个 UITableView,用户可以在其中添加他的地址簿中的联系人。第一行显示名字,第二行显示姓氏。我知道问题出在哪里,因为现在我实际上告诉他该怎么做。但是我怎样才能告诉他在同一个单元格中显示两个名字呢?我用以下方法做到了,但它们不起作用。

-(void)addObjectsFromArray:(NSArray *)otherArray
{
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray addObjectsFromArray:menuArray];
NSLog(@"%@", myArray);
[self.tableView reloadData];
}

问题是我无法显示 myArray 中的对象,因为 cellforRowAtIndex 方法没有获取值。使用那个我得到了相同的结果(firstName 第一行,lastName 第二行):

NSArray *objects = [[NSArray alloc] initWithObjects:firstName, lastName, nil];
NSString *cellValue = [objects objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
NSLog(@"%@", objects);

return cell;

最佳答案

您的代码不仅在不同的单元格中显示名字和姓氏,而且对于索引大于 1 的行也不起作用。这是因为您的表数据源是从您在第一行使用 alloc/init 创建的全新数组读取的,而不是从您的模型读取的。您的小数组仅包含两个对象,解释了两行。

这是您需要做的:首先,使一组用户可用于表的数据源。假设它叫做 userArray。将每个用户的用户数据放入该数组。假设每个用户都存储为 MYUser 类型的对象,该对象响应 [user firstName][user lastName] 调用用户的姓氏。

现在将此代码放入表的数据源中:

MYUser *user = [userArray objectAtIndex:indexPath.row];
NSString *cellValue = [NSString stringWithFormat:@"%@ %@", [user firstName], [user lastName]];
cell.textLabel.text = cellValue;

编辑:如果您的 menuArray 将名字和姓氏存储在单独的连续字符串对象中,您仍然可以这样做(尽管我建议不要这样做,因为它会对将来维护您程序的人造成混淆)。

首先,您需要更改返回表中项目数的方法以返回 menuArray.count/2 而不仅仅是 menuArray.count。然后你可以修改你的代码如下:

NSString firstName = [menuArray objectAtIndex:indexPath.row/2];
NSString lastName = [menuArray objectAtIndex:indexPath.row/2 + 1];
NSString *cellValue = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
cell.textLabel.text = cellValue;

EDIT2 :这是创建一个存储用户名字和姓氏的类的方法。您将 @interface 部分添加到 MYUser.h,将 @implementation 部分添加到 MYUser.m 文件。然后,您将 MYUser.h 导入到您引用 MYUser 类的 .m 文件中,并使用 initWithFirstName:andLastName: 来初始化新实例。下面的示例假定您使用 ARC:

我的User.h文件:

#import <UIKit/UIKit.h>
@interface MYUser : NSObject
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;
-(id)initWithFirstName:(NSString*)first andLastName:(NSString*)last;
@end

我的User.m文件:

@implementation MYUser
@synthesize firstName, lastName;
-(id)initWithFirstName:(NSString*)first andLastName:(NSString*)last {
self = [super init];
if (self) {
self.firstName = first;
self.lastName = last;
}
return self;
}
@end

关于iphone - 如何在一个单元格(tableView)中显示两个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8960860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com