如果我的问题正确 - 这是我将自动应用版本添加到 InAppSettingsKit 视图的方法。
在 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;
}
结果如下: