113

UITableViewを使用してInterfaceBuilderでを作成しましたstoryboards。は、いくつかの異なるセクションでUITableView設定されています。static cells

私が抱えている問題は、アプリをいくつかの異なる言語でセットアップしようとしていることです。UITableViewこれを行うには、セクションのタイトルをなんらかの方法で変更できる必要があります。

誰かが私を助けてくれませんか?理想的にはを使用して問題にアプローチしたいのですがIBOutlets、この場合はこれも不可能だと思います。アドバイスや提案をいただければ幸いです。

前もって感謝します。

4

8 に答える 8

288

UITableViewdelegatedatasourceコントローラーを接続したら、次のように実行できます。

ObjC

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

    NSString *sectionName;
    switch (section) {
        case 0:
            sectionName = NSLocalizedString(@"mySectionName", @"mySectionName");
            break;
        case 1:
            sectionName = NSLocalizedString(@"myOtherSectionName", @"myOtherSectionName");
            break;
        // ...
        default:
            sectionName = @"";
            break;
    }    
    return sectionName;
}

迅速

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {

    let sectionName: String
    switch section {
        case 0:
            sectionName = NSLocalizedString("mySectionName", comment: "mySectionName")
        case 1:
            sectionName = NSLocalizedString("myOtherSectionName", comment: "myOtherSectionName")
        // ...
        default:
            sectionName = ""
    }
    return sectionName
}
于 2012-05-08T20:27:53.500 に答える
17

Swift でコードを記述している場合は、次のような例になります。

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
{
    switch section
    {
        case 0:
            return "Apple Devices"
        case 1:
            return "Samsung Devices"
        default:
            return "Other Devices"
    }
}
于 2015-12-02T10:58:56.480 に答える
10

UITableViewDataSource メソッドを使用する

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
于 2012-05-08T20:12:25.987 に答える
5

titleForHeaderInSectionUITableView のデリゲートメソッドなので、セクションのヘッダーテキストを適用するには、次のように記述します。

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return @"Hello World";
}
于 2014-11-15T04:44:56.120 に答える
3

UITableView のデリゲートに実装されている-(NSString *)tableView: titleForHeaderInSection:場合、UITableView によって呼び出されないことに注意してください。- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

于 2015-08-29T10:00:23.350 に答える
2
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
   return 45.0f; 
//set height according to row or section , whatever you want to do!
}

セクション ラベル テキストが設定されます。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *sectionHeaderView;

        sectionHeaderView = [[UIView alloc] initWithFrame:
                             CGRectMake(0, 0, tableView.frame.size.width, 120.0)];


    sectionHeaderView.backgroundColor = kColor(61, 201, 247);

    UILabel *headerLabel = [[UILabel alloc] initWithFrame:
                            CGRectMake(sectionHeaderView.frame.origin.x,sectionHeaderView.frame.origin.y - 44, sectionHeaderView.frame.size.width, sectionHeaderView.frame.size.height)];

    headerLabel.backgroundColor = [UIColor clearColor];
    [headerLabel setTextColor:kColor(255, 255, 255)];
    headerLabel.textAlignment = NSTextAlignmentCenter;
    [headerLabel setFont:kFont(20)];
    [sectionHeaderView addSubview:headerLabel];

    switch (section) {
        case 0:
            headerLabel.text = @"Section 1";
            return sectionHeaderView;
            break;
        case 1:
            headerLabel.text = @"Section 2";
            return sectionHeaderView;
            break;
        case 2:
            headerLabel.text = @"Section 3";
            return sectionHeaderView;
            break;
        default:
            break;
    }

    return sectionHeaderView;
}
于 2016-05-30T11:22:56.727 に答える