有没有办法在InAppSettingsKit中动态定义单元格值?

时间:2015-01-25 22:33:36

标签: ios inappsettings

由于自然原因,似乎所有内容都是有线的,以便从Settings.bundle值中获取其信息。

但请查看"应用程序信息"在示例epp中,它的版本硬编码为" 1.0"。在设置屏幕中,我现在使用(自制)我动态获取并显示它。是不是有办法覆盖那里显示的内容。

对于单元格说明符"动态值非常好"或者你可以覆盖的东西,这样我就可以编写一个方法从主包中获取该单元格的CFBundleShortVersionString。我还有其他一些用例,我想要从我们的服务器获取和写入动态多选值,不确定我是否能够使用这个api。

1 个答案:

答案 0 :(得分:0)

如果我的问题是正确的 - 这就是我如何将自动应用版本添加到InAppSettingsKit View中。

在Settings.bundle的Root.inApp.plist(或Root.plist)中,将Type of Version字段设置为IASKCustomViewSpecifier:

<dict>
    <key>DefaultValue</key>
    <string>1.5</string>
    <key>Key</key>
    <string>version</string>
    <key>Title</key>
    <string>VERSION</string>
    <key>Type</key>
    <string>IASKCustomViewSpecifier</string>
</dict>

接下来为你IASKAppSettingsViewController设置一些代表。在分配点:

- (IASKAppSettingsViewController*)appSettingsViewController {
    if (!appSettingsViewController) {
        appSettingsViewController = [[IASKAppSettingsViewController alloc] init];
        appSettingsViewController.delegate = self;
    }
    return appSettingsViewController;
}

现在您可以使用这些委托方法(仅针对IASKCustomViewSpecifier字段调用它们):

- (CGFloat)tableView:(UITableView*)tableView heightForSpecifier:(IASKSpecifier*)specifier;
- (UITableViewCell*)tableView:(UITableView*)tableView cellForSpecifier:(IASKSpecifier*)specifier;

这是我的实施:

- (UITableViewCell*)tableView:(UITableView*)tableView cellForSpecifier:(IASKSpecifier*)specifier {
    NSString *identifier = [NSString stringWithFormat:@"%@-%ld-%d", specifier.type, (long)specifier.textAlignment, !!specifier.subtitle.length];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier];
    }
    if ([specifier.key isEqualToString:@"version"]) {
        [cell.textLabel setText:specifier.title];
        [cell.detailTextLabel setText:[NSString stringWithFormat:@"%@ (%@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]]];
    }
    NSLog(@"Cell key: %@", specifier.key);
    return cell;
}
- (CGFloat)tableView:(UITableView*)tableView heightForSpecifier:(IASKSpecifier*)specifier {
    return 44.0f;
}

结果如下:

IASKAppSettingsViewController