我正在寻找一种从单个文档填充表视图的方法,即我想加载.po文件。 我希望我的表视图的每一行都能从PO文件加载一行文本。
理想情况下,我想在第一列中有一行,在第二列中有相应的翻译(以获得内容的清晰视图)。
我还没有多少关于表格的观点,所以请原谅我的无知! 我已经完成了我的研究,但我发现苹果文档令人困惑且非常不清楚 - 并且在网上找不到太多......
提前感谢您的帮助!
答案 0 :(得分:3)
您不会将数据推送到表格视图,而是从您那里提取数据。这可以通过绑定或通过实现表视图数据来完成(在NS *和UI *平台之间有点不同,但大致相同)。
NSTableView和UITableView文档都包含指向示例和编程指南的链接。阅读这些内容,如果仍然没有得到,请提出具体问题。
答案 1 :(得分:3)
bbum是正确的,你没有将数据推送到你的桌面,你提供它并且表格显示它。星期五我做了一个快速的模拟,把文本文件逐行显示,所以也许有些代码可以帮助一些。
获取与其数据源的插座连接的表格视图,然后您可以执行以下操作:
// Class variable in your table delegate object
NSArray* lineList;
IBOutlet NSTableView* table;
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
return [lineList count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
return [lineList objectAtIndex:row];
}
// Be sure to use the proper encoding for your text file
// do something like this to load your text file.
- (void) loadData:(NSString*)ourPath
{
NSError* err = nil;
NSString* fullFileText = [NSString stringWithContentsOfFile:ourPath encoding:NSMacOSRomanStringEncoding error:&err];
if (err)
NSLog(@"Err: %@, %d", [err localizedDescription], [err code]);
if (fullFileText)
{
lineList = [[fullFileText componentsSeparatedByString:@"\n"] retain];
[table reloadData];
}
}
在您的情况下,您可能希望保留一组字典,为文本的两个版本使用不同的键。这样你就可以有两列。当调用tableView:objectValueForTableColumn:时,NSTableColumn将告诉您将要绘制哪个列。你在这里的另一个选择是创建一个自定义单元格,其中包含两个字段,但这可能是你所要求的过度杀伤。
另请注意,您可以添加许多其他可选的委托调用,以便更灵活地显示数据。
此外,对于更具动态性的复杂任务,我发现绑定更好。如果你对他们感到不舒服,他们可能会感到困惑。对于简单的桌子来说,走这条路线往往同样容易。祝你好运!