子类化IASKAppSettingsViewController

时间:2011-06-14 00:49:06

标签: ios iphone inappsettingskit

我正在尝试调整默认IASKAppSettingsViewController的行为,以便它可以为自定义视图提供自定义子视图控件(对于type = PSChildPaneSpecifier)(type = IASKCustomViewSpecifier)。

我尝试将IASKAppSettingsViewController子类化,而不向代码添加任何新功能。

然而,当我加载自己的子类时,设置视图是完全空的 - 即使对于一个裸子类。当我切换回默认的IASKAppSettingsViewController时,一切都按预期工作。

我已经尝试在我的子类中设置各个地方的断点,一切似乎都运行正常 - 除了没有显示任何内容。

我已经尝试在文档中寻找线索,但似乎无法找到解释原因的任何内容。 InAppSettingsKit的文档甚至声明它是为子类化而设计的。

我在这里缺少什么?任何线索都值得赞赏 - 甚至更好的是一个小巧的傻瓜指南。

更新了代码:

设置侧视图。它适用于标准的IASKAppSettingsViewController,但失败了我的空派生的MyCustomSettingsViewController

- (IBAction)showInfo:(id)sender
{    
    // Setup navigation controller for settings view
    MyCustomSettingsViewController *settings = [[MyCustomSettingsViewController alloc] init];
    //IASKAppSettingsViewController *settings = [[IASKAppSettingsViewController alloc] init];
    settings.delegate = self;
    settings.showDoneButton = YES;
    UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:settings];
    navigation.navigationBar.barStyle = UIBarStyleBlack;
    [settings release];

    // Display the settings
    navigation.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:navigation animated:YES];
    [navigation release];
}

2 个答案:

答案 0 :(得分:1)

尝试将此方法添加到您的子类中:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    return [super initWithNibName:@"IASKAppSettingsView" bundle:nibBundleOrNil];
}

如果你不这样做,IASKAppSettingsViewController的默认实现就会启动并尝试查找以你的类名命名的nib,在本例中为“MyCustomSettingsViewController.nib”。这可能不存在。

这是因为-init的默认实现调用了-initWithNibName:nil bundle:nilnil,因为文件名意味着搜索默认的笔尖。

答案 1 :(得分:0)

尝试在初始化步骤中设置断点,如果要将其添加为子视图/推送导航控制器。对每种方法使用NSLog,以便找到问题。如果没有任何作用,请将代码发送给我(使用IASKAppSettingsViewController创建一个演示代码)来解决问题,然后我会研究这个问题。