Какао Touch UITableView данных - PullRequest
       10

Какао Touch UITableView данных

1 голос
/ 01 октября 2009

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

Я загружаю набор данных из набора данных JSON и использую его для заполнения UITableView в UITableViewController.

Сначала при загрузке представления (viewDidLoad) я заполняю массив данными JSON из URL.

Далее данные загружаются как следует. numberOfRowsInSection показывает, что в массиве 30 результатов, что является правильным.

Однако Iphone загружает весь набор три раза в табличное представление.

Вот некоторый код из контроллера для этого представления: (Twitter используется в качестве примера, а не фактический набор данных, который я использую)

 - (void)viewDidLoad {
    [super viewDidLoad];

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
 //results = [[NSMutableArray alloc] init];

 self.navigationItem.title=@"public_timeline";
 self.tableView.allowsSelection = NO;
 NSString *url = [[NSString alloc] init];
 url = [[NSString alloc] initWithFormat:@"http://twitter.com/statuses/%s.json",@"public_timeline"];
 if ([results count] == 0) {
  [self parseJSON:url];
 }
    }

Here is the parseJSON (actual parse is done with the Cocoa JSON framework

    -(void) parseJSON:(NSString *)URL{
     NSURL *JSONURL = [NSURL URLWithString:URL];
     NSData *responseData = [[NSData alloc] initWithContentsOfURL:JSONURL];
     NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
     results = [[NSMutableArray alloc] initWithArray:[responseString JSONValue]];
    }


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

затем вывод ячейки

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
  // Set up the cell...
    }
    NSDictionary *cdict = [results objectAtIndex:indexPath.row]; 
 cell.textLabel.text = [cdict valueForKey:@"text"];
    return cell;
}

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

1 Ответ

0 голосов
/ 22 февраля 2011

Проверьте метод numberOfSectionsInTableView и измените возвращаемое значение на 1

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
   return 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...