iOS将UIDatePicker添加到选项卡式界面

时间:2013-02-04 21:06:51

标签: ios uinavigationcontroller uidatepicker

我在尝试显示UIDatePicker时遇到了一个奇怪的问题。我的应用程序有标签和导航控制器,设置如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    OneViewController *oneController = [[OneViewController alloc] initWithStyle:UITableViewStyleGrouped];
    Controller.title = @"One";
    UINavigationController *oneNav = [[UINavigationController alloc] initWithRootViewController:oneController];

    TwoViewController *twoController = [[TwoViewController alloc] initWithStyle:UITableViewStyleGrouped];
    twoController.title = @"Two";
    UINavigationController *twoNav = [[UINavigationController alloc] initWithRootViewController:twoController];

    UITabBarController *mainTabController = [[UITabBarController alloc] initWithNibName:nil bundle:nil];
    mainTabController.viewControllers = @[oneNav, twoNav];
    self.window.rootViewController = mainTabController;
    [self.window makeKeyAndVisible];
    return YES;
}

内容控制器是UITableViewController的子类。在某个地方,我希望显示选择器元素,例如UIDatePicker和更通用的UIPickerView。我尝试从头开始创建必要的结构,这对于UIPickerView工作正常但拒绝对UIDatePicker起作用 - 它导致应用程序挂起并最终崩溃,而Instruments表明某些内容不断循环并分配内存中无限数量的对象,直到整个事情最终崩溃。

我发现https://github.com/TimCinel/ActionSheetPicker再一次,对于更多通用选择器(ActionSheetStringPicker)工作正常,但在我尝试使用ActionSheetDatePicker时以相同的方式挂起。在一个空白的应用程序中尝试这一切一切正常,但在我现有的标签栏+导航栏层次结构中它挂起,吃资源和崩溃。

发生了什么事?

我的所有视图和控制器都是以编程方式创建的,无需使用xib和故事板。

编辑:我打电话给拣货员的方式如下:

- (void) showPickerForRow:(int)row section:(int)section{
    UITextField *textField = _cellTextFields[section][row];
    [self.view endEditing:YES];

    if (section == 1) {
        switch (row) {
            case 0: {
                NSDate *minDate = [NSDate date];
                [ActionSheetDatePicker showPickerWithTitle:@"Select Date" datePickerMode:UIDatePickerModeDate selectedDate:minDate target:self action:nil origin:textField];
            }
                break;
            case 1: {
                ActionStringDoneBlock done = ^(ActionSheetStringPicker *picker, NSInteger selectedIndex, id selectedValue) {
                    textField.text = selectedValue;
                };
                NSArray *timeSlots = [NSArray arrayWithObjects:@"8am", @"12pm", @"4pm", @"8pm", nil];
                int i = [timeSlots indexOfObject:self.treatTime];
                if (i == NSNotFound) i = 0;
                [ActionSheetStringPicker showPickerWithTitle:@"Select Time Slot" rows:timeSlots initialSelection:i doneBlock:done cancelBlock:nil origin:textField];
            }
                break;
            default:
                break;
        }
}

当触摸表格中的特定元素时,将调用此函数。第一个案例挂起并崩溃,第二个案例就像一个冠军 - 他们都来自github上的ActionSheetPicker。我将动作设置为nil只是为了测试,但无论其值如何,它都会挂起。

0 个答案:

没有答案