尝试将带标题的部分添加到UITableViewController(iOS)

时间:2014-05-11 00:47:49

标签: ios uitableview sections

我对Objective-c还很新,而且我已经找到了答案。我还没能成功实现我发现的任何东西。我使用的是我发现的开源滑动菜单,但我还没有发现任何符合其使用的代码的内容。 (我发布了一个链接,但我无法记住我找到它的位置。)

编辑:我已经添加了部分。现在,我只需要这样做,这样第二部分中的第一个单元格只显示在第一部分中。 http://i.imgur.com/gSIRNJ3.png

我已更新以下代码。这是我尝试做的事情的参考。现在,单元格1显示在第1部分和第2部分中。

第1节:(无标题) - 单元格1:"搜索名词"

第2节:"名词共轭"
- 单元格2:"普通名词"
- 单元格3:"不规则名词"
- 单元格4:"不可数名词"

#import "BaseTableViewController.h"
#import "KYSlideMenuViewController.h"

@interface BaseTableViewController () {
    int   _currentCtrNum;
}

@end

@implementation BaseTableViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    // 最初に表示するビューを設定する
    _currentCtrNum = -1;
    NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:0];
    [self tableView:self.tableView didSelectRowAtIndexPath:path];
}

#pragma mark -

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2 ;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if(section == 0)
        return 1;
    else
        return 4;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    if(section==0)
        return 0;
    else
        return 25;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    if (section == 0)
        return @"";

    else
        return @"reference";

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    switch (indexPath.row) {
        case 0:
            cell.textLabel.text = @"名詞検索";
            break;
        case 1:
            cell.textLabel.text = @"Side B";
            break;
        case 2:
            cell.textLabel.text = @"Side C";
            break;
        case 3:
            cell.textLabel.text = @"Side D";
        default:
            break;
    }
    cell.backgroundColor = [UIColor grayColor];

    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    for (int i = 0 ; i < [tableView numberOfRowsInSection:0] ; i++) {
        NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:0];
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
        if (i == indexPath.row) {
            cell.textLabel.textColor = [UIColor whiteColor];
        } else {
            cell.textLabel.textColor = [UIColor blackColor];
        }
    }

    // 現在のビューコントローラなら表示するだけ
    if (_currentCtrNum == indexPath.row) {
        [(KYSlideMenuViewController *)self.parentViewController slideChildTo:KYS_CLOSE];
        return;
    }
    _currentCtrNum = (int)indexPath.row;

    // 新しいビューコントローラを生成してコンテナのビューコントローラを入れ替え
    UIViewController *toCtr;
    switch (indexPath.row) {
        case 0: // noun search
            toCtr = [[self storyboard] instantiateViewControllerWithIdentifier:@"itemTableView"];
            break;
        case 1: // navigationあり
            toCtr = [[self storyboard] instantiateViewControllerWithIdentifier:@"mainView"];
            break;
        case 2: // navigationなし
            toCtr = [[self storyboard] instantiateViewControllerWithIdentifier:@"subView"];
            break;
        case 3: // navigationあり
            toCtr = [[self storyboard] instantiateViewControllerWithIdentifier:@"srdView"];
            break;
        default:
            return;
    }
    [(KYSlideMenuViewController *)self.parentViewController changeTo:toCtr];
}

@end

1 个答案:

答案 0 :(得分:0)

还应该有numberOfSectionsInTableView:的代表,你将返回2;