Ваш код не только отображает имя и фамилию в разных ячейках, он также не работает для строк с индексами больше единицы. Это потому, что ваш источник данных таблицы читает из совершенно нового массива, который вы создаете с помощью 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
в файлы .m, из которых вы ссылаетесь на класс MYUser
, и используете initWithFirstName:andLastName:
для инициализации новых экземпляров. В приведенном ниже примере предполагается, что вы используете ARC:
Файл MYUser.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
Файл MYUser.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