2011-06-12 52 views
0

我正在寻找一种方法来从单个文档填充表视图,即我想要加载.po文件。 我希望我的表格视图的每一行从PO文件中加载一行文本。在Obj-C中逐行填充TableView

理想情况下,我想在第一列有一行,并在第二列有相应的翻译(以获得内容的清晰视图)。

我还没有太多的表意见,所以请原谅我的无知! 我已经完成了我的研究,但我发现苹果文档混淆和非常不清楚 - 并没有发现太多的在线...

在此先感谢您的帮助!

+0

什么是您的目标平台:Mac OS X或iOS? – 2011-06-12 12:11:56

回答

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会告诉你将要绘制哪一列。你在这里的另一个选择是制作一个自定义单元格,其中有两个字段,但这可能是为你所问的问题矫枉过正。

还要注意,您还可以添加许多其他可选的委托调用,以便更灵活地显示数据。

此外,对于更动态的复杂任务,我发现绑定更好。如果你对他们不满意,他们可能会感到困惑。对于简单的表格来说,走这条路线通常很容易。祝你好运!

+0

slycrel,谢谢你的一段代码,你太棒了。谢谢你的解释,这对我来说澄清一点!当我回到家时,我会尝试使用你的代码,我一定会通知你的。顺便说一下,我的项目中没有包含libgettext.dylib或somemhing的库吗?这是另一件令我困惑的事情,.po文件显然是GNUGetText格式,所以我必须查看它,并编码,然后从那里找出其余的。谢谢你的帮助! – WeeBey 2011-06-13 05:45:00

+0

我对.po文件不熟悉,所以在这里解析文件可能需要根据格式进行更改。祝你好运! – slycrel 2011-06-14 22:16:23

+0

slycrel,我正在苦苦挣扎!我无法为我的生活实现此代码。不知道我做错了什么显然。有什么办法可以为我提供此代码的示例项目吗?我希望能够保存从我的应用程序编辑的数据,但这一切都让我感到困惑!我会自己找出解析部分,或者在需要时寻求帮助。提前致谢! – WeeBey 2011-06-17 11:46:01

3

您不会将数据推送到表视图,它会从您那里获取数据。这可以通过绑定或通过实现表视图数据酸(NS *和UI *平台之间稍有不同,但大多相同)来完成。

NSTableViewUITableView文档都有示例和编程指南的链接。阅读这些内容,如果你仍然不明白,请提出具体问题。

+0

您好宝贝,感谢您的回答。如果我仍然不明白,我会再看看你给我的链接,然后回来。 – WeeBey 2011-06-12 16:34:16