Массив в UITableView - PullRequest
       6

Массив в UITableView

4 голосов
/ 29 августа 2011

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

Я точно следовал учебникам из их слов и до сих пор не могу получить массив для отображения на моем UITableView.

Вот мой код.

- (void)viewDidLoad
{
   [super viewDidLoad];
   // Do any additional setup after loading the view from its nib.
   salesArray = [[NSMutableArray alloc] init];

  //Add items
  [salesArray  addObject:@"Credit"];
  [salesArray  addObject:@"Debit"];
  [salesArray  addObject:@"EBT"];


  //Set the title
  self.navigationItem.title = @"Sale Type's";
}

-(NSInteger)tableView:(UITableView *)tableView 
                      numberOfRowsInSection:(NSInteger)section
{return [salesArray count];}

-(UITableViewCell *)tableView:(UITableView *)tableView 
        cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  static NSString *CellIdentifier = @"Cell";
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if(cell == nil)
  {
    cell = [[[UITableViewCell alloc]initWithFrame:CGRectZero 
    reuseIdentifier:CellIdentifier]autorelease];
  }
  NSString *value = [salesArray objectAtIndex:indexPath.row];
  cell.textLabel.text = value;
  return cell;
}

И да, я объявил это в файле .h и в файле .m.
Любая помощь в любых направлениях была бы отличной, спасибо!

Ответы [ 4 ]

8 голосов
/ 29 августа 2011

Объявите salesArray как свою собственность и в поле cellForRowAtIndexPath используйте

cell.textLabel.text = [self.salesArray objectAtIndex:indexPath.row];
2 голосов
/ 29 августа 2011

Я предполагаю, что ваш контроллер представления расширяет UITableViewController? Если это так, вам просто нужно добавить эту строку в конце методов viewDidLoad и / или viewDidAppear:

[self.tableView reloadData];

Кроме того, я бы использовал self.salesArray вместо salesArray. Не совсем уверен, в чем разница, но в прошлом у меня были проблемы, не добавлявшие «я» к некоторым моим переменным.

1 голос
/ 05 июля 2012

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

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
0 голосов
/ 10 августа 2016

На мой взгляд, это гораздо лучше и легче понять по следующему коду:

import Foundation
import UIKit
class testTableViewController: UITableViewController {    
override func viewDidLoad{
super.viewDidLoad()
}

let nameList = ["name1","name2","name3","name4","name5","name6"]

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int)->
Int{
return nameList.count
}

override func tableView(TableView:UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCellWithIdentifier("test_row", forIndexPath: indexPath)
let row1 = nameList[indexPath.row]

cell.textLabel? .text = row1
return cell
}

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