我正在通过故事板在静态UITableViewCell中配置一个UIPickerView。由于某些原因,加载控制器时UIPickerView不显示。
故事板:

UIPickerView是单元格内容View...and的子级,表视图被配置为显示“静态单元格”。(分组样式)
UIPickerView代表和dataSource作为故事板连接检查器中的插座连接到UITableViewController:

如果我以编程方式将选取器视图添加到表格单元格中,则在viewDidLayoutSubviews回调中,将出现PickerView并触发委托回调,以便可以为选取器配置数据。(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];
}这会导致选取器的正确初始化出现问题,因为每次在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通过故事板在静态UITableViewContoller中加载UIPickerView的正确方法是什么?
此外,我不知道这是否相关,但在本例中,表视图控制器是通过段从另一个UITableViewController加载的:
- (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
发布于 2015-01-16 00:17:10
我通过从Storyboard中删除此控制器中的现有选取器视图,然后重新添加每个视图来解决此问题。
由于某种原因,拾取器视图在故事板视图中呈灰色显示。(上图第一张)在删除Picker视图并将其添加回来后,它并没有变灰。我不知道为什么Picker View一开始是灰色的,也不知道这对Storyboard意味着什么,但希望这能在未来对某些人有所帮助。
https://stackoverflow.com/questions/27885139
复制相似问题