0

すべてのタイトルのセクションを TableView に設定しました。

しばらくして、セクションのテーブルビューでタイトルの値を取得する必要があります。

その値をUITableViewに直接問い合わせるにはどうすればよいですか?

デリゲート プロトコルを使用しない場合:

    [self tableView:tableView titleForHeaderInSection:i]

このメソッドは、自分のクラスのプロトコルをオーバーライドするためです。

- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
 {
     /* If datasource methdod is implemented, get´s the name of sections*/
     SEL nameForSection = @selector(nameForSection:);
    if ( (self.dataSource) && [self.dataSource respondsToSelector:nameForSection] )
    {
       NSString *titleSection = [self.dataSource nameForSection:section];
       return titleSection;
   }

return nil;

}

ありがとうアドバンス...

4

6 に答える 6

7

iOS6.0以上のバージョンから対応開始

indexPath がある場合、次のように取得できます。

UITableViewHeaderFooterView* header =[self.tableView headerViewForSection:indexPath.section];
NSLog(@"Header text = %@", header.textLabel.text);

このように変更します

header.textLabel.text= @"changed";
于 2012-11-15T08:56:23.670 に答える
5

UITableView の dataSource を使用して、セクション タイトルを取得できます。

[tableView.dataSource tableView:tableView titleForHeaderInSection:section];

デフォルトの dataSource (つまり、UITableViewController) を使用している場合は、InterfaceBuilder で設定されたセクション タイトルが返されます。

テンプレート ビューを複製し、タイトルを適切に設定するコードを次に示します。テンプレートを保存し、 UITableViewController サブクラスの viewDidLoad でテンプレートを削除するための便利な場所として、テーブルのヘッダー ビューを使用するだけであることに注意してください。

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView* header = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self.sectionHeaderTemplateView]];
    UILabel* label = ((UILabel*)header.subviews[0]);
    label.text = [tableView.dataSource tableView:tableView titleForHeaderInSection:section];
    return header;
} 
于 2014-05-23T12:47:56.753 に答える
2

セクションのタイトルを NSArray に保存し、この配列を使用して、テーブル ビュー内の任意のセクションの値を取得します。

于 2012-07-11T09:28:45.550 に答える
2

セクションのタイトルはどのように設定しましたか? UITableViewDataSource から tableView:titleForHeaderInSection: メソッドをオーバーライドしている場合は、それを自分で呼び出して、特定のセクションのタイトルを取得できます。UITableViewDataSource の tableView:viewForHeaderInSection: メソッドをオーバーライドする場合は、特定のセクションのラベルのタイトルを取得できるように、すべてのラベルを含む配列を持つことを検討してください。

于 2012-07-11T09:31:54.837 に答える
1

このテーブルビューメソッドはヘッダーのビューを返します。あなたの場合はそうあるべきだと思いますUILabel

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
于 2012-07-11T09:33:07.617 に答える
0
- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
 {
     /* If datasource methdod is implemented, get´s the name of sections*/
     SEL nameForSection = @selector(nameForSection:);
    if ( (self.dataSource) && [self.dataSource respondsToSelector:nameForSection] )
    {
       NSString *titleSection = [self.dataSource nameForSection:section];
       return titleSection;
   }

return nil;

Hum... Your DataSource have a DataSource ? The goal of the UITableView's dataSource is to be implemented by an other class, so self.datasource is not the datasource of UITableView !

于 2012-07-11T10:12:18.997 に答える