隐藏/删除表格视图部分

时间:2012-05-21 21:05:56

标签: objective-c uitableview row

我正在开发一个类似于联系人应用的应用。它有一个项目列表,每个项目都有一个详细信息视图。详细视图是一个表格视图,显示名称,地点,值等值。但是,如果地方没有值,我不希望它的部分出现,以便详细视图中没有空白单元格。我有6个部分。即使未分配值,第2部分也应始终显示,第5部分有两行。所有其他部分都有1行。 我看了其他问题;但是,我没有取得多大成功。我目前的代码如下:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return sectionTitles;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    if (section == 1) {
        if ([[[detailGift givingTo] name] length] == 0) {
            return nil;
        }
        else {
            return @"";
        }
    }
    else if (section == 2) {
        return @"";
    }
    else if (section == 3) {
        if ([[[detailGift reasonFor] name] length] == 0) {
            return nil;
        }
        else {
            return @"";
        }
    }
    else if (section == 4) {
        if ([[[detailGift boughtFrom] name] length] == 0) {
            return nil;
        }
        else {
            return @"";
        }
    }
    else if (section == 5) {
        if ([[formatter stringFromDate:[detailGift dateGiving]] length] == 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] == 0) {
            return nil;
        }
        else {
            return @"";
        }
    }
    else {
        if ([[detailGift notes] length] == 0) {
            return nil;
        }
        else {
            return @"";
        }
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == 1) {
        if ([[[detailGift givingTo] name] length] == 0) {
            return 0;
        }
        else {
            return 1;
        }
    }
    else if (section == 2) {
        return 1;
    }
    else if (section == 3) {
        if ([[[detailGift reasonFor] name] length] == 0) {
            return 0;
        }
        else {
            return 1;
        }
    }
    else if (section == 4) {
        if ([[[detailGift boughtFrom] name] length] == 0) {
            return 0;
        }
        else {
            return 1;
        }
    }
    else if (section == 5) {
        if ([[formatter stringFromDate:[detailGift dateGiving]] length] == 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] == 0) {
            return 0;
        }
        else if ([[formatter stringFromDate:[detailGift dateGiving]] length] != 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] == 0) {
            return 1;
        }
        else if ([[formatter stringFromDate:[detailGift dateGiving]] length] == 0 && [[formatter stringFromDate:[detailGift datePurchased]] length] != 0) {
            return 1;
        }
        else {
// Crashes after returning value of two
            return 2;
        }
    }
    else {
        if ([[detailGift notes] length] == 0) {
            return 0;
        }
        else {
            return 1;
        }
    }
}

这对我来说似乎非常混乱,也会导致以下异常: 因未捕获的异常'NSRangeException'而终止应用程序,原因:' * - [__ NSArrayI objectAtIndex:]:索引1超出边界[0 .. 0]'

如果有人能给我一些建议或让我朝着正确的方向前进,我会非常感激! 非常感谢! 斯科特

0 个答案:

没有答案