0

嗨,我正在尝试更新我正在开发的应用程序。该应用程序最初是一个五视图选项卡视图应用程序。我已经决定要修改应用程序,使其具有更少的选项卡,因此我想将三个选项卡移动到一个表格列表中并从那里加载它们,从而腾出一些选项卡栏空间用于我的其他一些事情想努力实施。

为了实现这一点,我想我会设置一个表格视图并将详细信息从 .plist 加载到 tableView 中。我想我可以在 .plist 中命名 .xib 文件,然后获取这些名称并使用它们将适当的 .xib 文件推送到视图中。从理论上讲,这一切听起来都不错(至少在我的脑海中),但我在这样做时遇到了一些问题。在创建表格视图方面,我可以使 .plist 正常工作,但我会陷入困境,因为我不知道如何传递笔尖的名称并使用它来推送正确的视图。谁能给我解释一下。我的 plist 如下所示:

<array>
<dict>
    <key>rowData</key>
    <array>
        <dict>
            <key>calcType</key>
            <string>Item 1</string>
            <key>subdetails</key>
            <string>some stuff about item 1</string>
            <key>nibName</key>
            <string>nibOne.xib</string>
        </dict>
        <dict>
            <key>calcType</key>
            <string>Item 2</string>
            <key>subdetails</key>
            <string>some stuff about item 2</string>
            <key>nibName</key>
            <string>nibTwo.xib</string>
        </dict>
        <dict>
            <key>calcType</key>
            <string>Item 3</string>
            <key>subdetails</key>
            <string>some stuff about item 3</string>
            <key>nibName</key>
            <string>nibThree.xib</string>
        </dict>
    </array>
</dict>

我的 didSelectRowAtIndex 方法目前看起来像这样:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{


     //Get the dictionary of the selected data source.
NSDictionary *dictionary = [[[self.artCalculators     objectAtIndex:indexPath.section]objectForKey:@"rowData"] objectAtIndex:indexPath.row];

CalcDetailViewController *controller = [[CalcDetailViewController alloc] initWithNibName:@"CalcDetailViewController" bundle:[NSBundle mainBundle]]; 

 controller.title = [dictionary objectForKey:@"calcType"];

 [self.navigationController pushViewController:controller animated:YES];

我知道需要改变的行是:

CalcDetailViewController *controller = [[CalcDetailViewController alloc] initWithNibName:@"CalcDetailViewController" bundle:[NSBundle mainBundle]];

但我不确定它需要是什么。谁能告诉我?

4

1 回答 1

1

您从字典中获取 nib 名称的方式与从字典中获取任何其他对象的方式相同:

NSString *nibName = [dictionary objectForKey:@"nibName"];
CalcDetailViewController *controller = [[CalcDetailViewController alloc] initWithNibName:nibName bundle:nil];

您不需要显式传入主包,如果传入nil.

于 2012-06-09T17:10:07.000 回答