Цель C - проблема с NSMutableArray и NSTableView - PullRequest
2 голосов
/ 22 октября 2009

У меня есть класс с именем Person, и в этом классе есть свойство PersonName (среди прочих).

MutableArray MyUserInfoArr содержит много объектов Person.

Я хочу перечислить каждое PersonName в ячейке TableView? Как мне это сделать? Заранее спасибо.

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

    static NSString *CellIdentifier = @"Cell";
    Person *myPerson;    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
    {
       cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    NSString *cellValue = [myUserInfoArr objectAtIndex:indexPath.row];
    cell.text = cellValue;

if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        Person *myPerson = [myUserInfoArr objectAtIndex:indexPath.row];
        cell.textLabel.text = myPerson.DisplayName;
        NSLog(@"abc %i",indexPath.section);
}

Это мой код, он запустился, но он просто возвращает атрибут Person.DisplayName последнего объекта Person в myUserInfoArr. Как это исправить?

Ответы [ 2 ]

2 голосов
/ 22 октября 2009

Самый простой способ - установить текст с помощью:

Person *person = [MyUserInfoArr objectAtIndex:[indexPath indexAtPosition:1]];
cell.textLabel.text = person.PersonName;

indexPath содержит два индекса, первый - индекс раздела, второй - индекс элемента в разделе. Так что я предполагаю, что в вашем случае у вас есть один раздел, поэтому нет никакого отношения к indexAtPosition: 0.

Вам также необходимо настроить методы источника данных таблицы, они сообщают вашему табличному представлению, сколько разделов / строк должно быть показано:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [MyUserInfoArr count];
}
1 голос
/ 22 октября 2009
Person *person = [myUserInfoArr objectAtIndex:indexPath.row];
cell.textLabel.text = person.PersonName;

Причина, по которой ваш код не работает: свойство text должно быть NSString *, а не Person *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...