Answers:
一旦你连接你的UITableView delegate
和datasource
你的控制器,你可以这样做:
- (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
}
numberOfSectionsInTableView:tableView:
才能将其调用。
numberOfSectionsInTableView:tableView:
IB中为静态单元实现的@drewish 。
numberOfSectionsInTableView:
,则将调用title方法并覆盖情节提要。由于这是静态表格视图,因此可以使用返回常数@wcochran的方法覆盖它
- (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;
}
其他答案没什么问题,但是这个答案提供了一种非编程的解决方案,该解决方案在静态表较小的情况下很有用。好处是可以使用情节提要来组织本地化。可以继续通过XLIFF文件从Xcode导出本地化。Xcode 9还提供了一些新工具来简化本地化。
(原版的)
我有类似的要求。我的Main.storyboard(Base)中有一个带有静态单元格的静态表。要使用.string文件(例如Main.strings(German))本地化章节标题,只需在情节提要中选择该章节并记下Object ID
然后转到您的字符串文件,在我的情况下为Main.strings(German),然后插入翻译:
"MLo-jM-tSN.headerTitle" = "Localized section title";
我不知道UITableView
协议的过去版本,但是从iOS 9开始,它func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
是UITableViewDataSource
协议的一部分。
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
}
}
extension ViewController: UITableViewDataSource {
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Section name"
}
}
您无需声明delegate
即可使用数据填充表格。