Загрузите Plist в UITableView только для 10 строк - PullRequest
0 голосов
/ 24 марта 2012

На самом деле это вопрос моего вопроса до того, как UITableView покажет только первую строку .

Теперь моя проблема в том, что я хочу просмотреть только 10 списков в моем списке.Если будет 11 элементов, первый элемент будет заменен вторым и т. Д., Поэтому в моем списке только 10 элементов.

И вот мой код для сохранения в списке:

NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsPath = [paths objectAtIndex:0];

NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];

NSMutableArray *array = [NSMutableArray arrayWithContentsOfFile:plistPath];


if (nil == array) {
    array = [[NSMutableArray alloc] init];
}


NSMutableArray *list = [[NSMutableArray alloc]init];

[list addObject:resi.text];

[array addObject:list];

[array writeToFile:plistPath atomically: TRUE];

И это весь код моего табличного представления, который был изменен

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return [array 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];
    }
    NSArray *list = (NSArray *)[self.array objectAtIndex:indexPath.row];
    if(list && [list count] > 0) { //to check and avoid any crash
        cell.textLabel.text = [list objectAtIndex:0];
    }
    // Configure the cell...
    return cell;
}

- (void)viewWillAppear:(BOOL)animated
{
    // get paths from root direcory
    NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
    // get documents path
    NSString *documentsPath = [paths objectAtIndex:0];
    // get the path to our Data/plist file
    NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"Data.plist"];

    array = [NSMutableArray arrayWithContentsOfFile:plistPath];
    [myHistoryTable reloadData];
}

1 Ответ

2 голосов
/ 25 марта 2012
if ([array count] > 10) {
    array = [array subarrayWithRange:NSMakeRange([array count] - 10, 10)];
}

, если вы не хотите перезаписывать исходный массив, создайте второй, который служит источником данных для tableView:

array = /* load from plist */;
if ([array count] > 10) {
    self.dataSourceArray = [array subarrayWithRange:NSMakeRange([array count] - 10, 10)];
}
else {
    self.dataSourceArray = array;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...