iOS,UITableView,带有自定义页脚文本和自定义页脚视图

时间:2012-10-01 22:44:31

标签: iphone ios uitableview

我有一个分组表。我有这个表的两个规则,在第一个条件下,我需要在页脚中显示漂亮的图片(这是有效的)。在第二个条件中,我需要在页脚中显示一些文本(这会失败)。是否可以在同一个表格中使用titleForFooterInSectionviewForFooterInSection?如果我同时在同一部分使用它们,哪一个应该优先?

- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    if (section < self.practiceLessonSet.lessons.count) {
        if ([[self.practiceLessonSet.lessons objectAtIndex:section] words].count == 1) {
            return @"No replies yet. Try the share button?";
        }
    }
    return nil;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    if (self.practiceLessonSet.lessons.count == 0) {
        UIImageView *view = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"introPractice"]];
        view.contentMode = UIViewContentModeCenter;
        return view;
    } else
        return nil;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    if (self.practiceLessonSet.lessons.count == 0)
        return 278;
    else
        // WHAT SHOULD I PUT HERE?
        return [super tableView:tableView heightForFooterInSection:section]; // <-- FAILS
}

3 个答案:

答案 0 :(得分:1)

是的,您可以同时使用它们。我的猜测是,当你期望它们是:

时,这些条件没有得到满足
if (section < self.practiceLessonSet.lessons.count) {
    if ([[self.practiceLessonSet.lessons objectAtIndex:section] words].count == 1) {
        return @"No replies yet. Try the share button?";
    }
}

答案 1 :(得分:0)

正如Kale所说,是的,您应该能够同时使用它们,因此在您的情况下检查导致问题的标题或视图部分是否失败(尝试添加几个日志语句并按照它查看如果他们真的被召唤,他们正在停止的地方)。根据我的经验,如果您同时拥有页脚或页眉的视图和标题,则如果两个视图都具有值,则视图最终会优先。

答案 2 :(得分:0)

只需在UITableViewAutomaticDimension

中返回值heightForFooterInSection即可

<强>目标C

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection: (NSInteger)section
{
    if (self.practiceLessonSet.lessons.count == 0)
        return 278;
    else
        return UITableViewAutomaticDimension;
}

<强>夫特

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
{
    if (self.practiceLessonSet.lessons.count == 0) {
        return 278
    }
    return UITableViewAutomaticDimension
}