带UIPickerView的静态UITableViewController无法加载UIPickerView

时间:2015-01-11 08:03:55

标签: ios uitableview storyboard uipickerview

我通过Storyboard在静态UITableViewCell中配置UIPickerView。出于某种原因,加载Controller时不会出现UIPickerView。

故事板: Storyboard

UIPickerView是Cell Content View的子级...并且Table View配置为显示" Static Cells"。 (分组式)

UIPickerView委托和dataSource在故事板连接检查器中作为Outlets连接到UITableViewController:

Connections Inspector

如果我以编程方式将Picker View添加到Table Cell,在viewDidLayoutSubviews回调中,则会出现PickerView并触发委托回调,以便可以使用数据配置Picker。 (titleForRow等):

在TableViewController.m中:

    // Can't figure out why - but regionPicker view can't be added in viewDidLoad, so it gets added here
- (void) viewDidLayoutSubviews {
    // For some reason regionPicker view gets pushed to top of view unless setting x & y to 0,0 here...
    [self.regionPicker setFrame:CGRectMake(0, 0, 320, 162)];
    // Add the regionPicker view as a subview to the regionPickerCell
    [self.regionPickerCell.contentView addSubview:self.regionPicker];    
}

这会导致Picker正确初始化出现问题,因为每次在UIPIckerView中进行新选择时都会调用viewDidLayoutSubviews。

这是我的TableViewController.h文件的样子:

@import UIKit;

@class DetailViewController;

@interface DetailViewController : UITableViewController<UIPickerViewDataSource, UIPickerViewDelegate>

@property (weak, nonatomic) IBOutlet UITableViewCell *regionCell;
@property (weak, nonatomic) IBOutlet UITableViewCell *regionPickerCell;
@property (weak, nonatomic) IBOutlet UIPickerView *regionPicker;

@end

通过Storyboard在静态UITableViewContoller中加载UIPickerView的正确方法是什么?

另外,我不知道这是否相关,但在这种情况下,表视图控制器是通过另一个UITableViewController的segue加载的:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"configNotification"]) {

        UINavigationController *navigationController = segue.destinationViewController;
        // Here's the UITableViewController in question...
        DetailViewController *detailViewController = [navigationController viewControllers][0];

        NSIndexPath *selectedPath = [self.tableView indexPathForCell:sender];
    }
}

非常感谢任何想法!

Xcode v6.1,SDK v8.1

1 个答案:

答案 0 :(得分:0)

我通过从故事板中删除此控制器中的现有选择器视图,然后再添加每个视图来解决此问题。

出于某种原因,Picker View在Storyboard视图中显示为灰色。 (上面的第一张图片)删除Picker View并将其添加回来后,它并没有变灰。我不知道为什么Picker View首先是灰色的,或者说是故事板中的含义,但希望这将有助于未来的人。