UITableView 未显示运行 iOS 5 的 iPad
Posted
技术标签:
【中文标题】UITableView 未显示运行 iOS 5 的 iPad【英文标题】:UITableView not showing iPad running iOS 5 【发布时间】:2012-01-19 18:52:18 【问题描述】:我遇到了一个奇怪的问题,该问题从现在出现在哪里。我不确定是因为我没有更新到 Xcode 4.2.1 还是 ios 5。
我有一个在操作系统 4.0 - 5.0 上运行的 iPad 应用程序。
我有一个 UITableView,它包含在一个以模态方式显示为表单的视图中。
该表在 4.x 上运行良好,但在 5.0 上运行时该表消失。
我知道每个人都听过这句话一百万次了,但昨天它确实运行良好,我没有更改任何内容,现在它不起作用。我昨天有一个工作副本,它安装在运行 iOS 5 的额外 iPad 上。今天它不想工作。
这是我的设置方法,也许你能发现问题。
UITableView 是在 IB 中创建的。设置了数据源和委托。
视图是这样调用的:
GuidedSearchPriceViewController *guide = [[GuidedSearchPriceViewController alloc] initWithNibName:@"GuidedSearchPriceViewController_iPad" bundle:nil]; UINavigationController *temp = [[UINavigationController alloc] initWithRootViewController:guide]; temp.modalPresentationStyle = UIModalPresentationFormSheet; [guide setModalDelegate:self]; [guide setAppDelegate:self.appDelegate]; temp.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:temp animated:YES];
在 iOS 4.x 中,我们得到这个:
但是 iOS 5 我们得到这个:
Price 视图的 viewDidLoad 方法是:
- (void)viewDidLoad
[super viewDidLoad];
//Tried for testing but still does nothing
self.table.delegate = self;
self.table.dataSource = self;
UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:@"Type" style:UIBarButtonItemStyleBordered target:self action:@selector(nextScreen)];
addButton.enabled = NO;
self.navigationItem.rightBarButtonItem = addButton;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismiss)];
self.navigationItem.leftBarButtonItem = cancel;
self.navigationController.navigationBar.tintColor = [UIColor redColor];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.png", [[NSBundle mainBundle] bundlePath], RP_iPad_FormsheetBackground]]];
else
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.png", [[NSBundle mainBundle] bundlePath], RP_BackgroundImage]]];
// Make sure the background of the table is clear. I have also tried taking this out
// to resolve the disappearing issue but it has no effect.
if ([self.table respondsToSelector:@selector(backgroundView)])
[self.table setBackgroundView:nil];
[self.table setBackgroundView:[[UIView alloc] init]];
[self.table setBackgroundColor:UIColor.clearColor];
priceList = [[NSArray alloc] initWithObjects:@"$750", @"$1000", @"$1250", @"$1500", @"$1750", @"$2000", @"$2000 +", nil];
非常感谢您的帮助,并一如既往地感谢您抽出宝贵的时间。
回答
我设法找出了问题所在,但我不确定它为什么会发生。也许有人可以对此有所了解。
我必须插入
[table reloadData];
-(void)viewDidLoad
结尾
我不确定为什么它必须存在于 iOS 5 而不是 iOS 4.x
【问题讨论】:
是否有新的编译器警告或运行时警告? 否定先生。我什至在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中设置了断点以确保它被调用。 (它正在被调用)。
如果您自己解决了问题,通常在堆栈溢出时将您的解决方案作为答案并自己接受;这样每个人都可以看到问题已经解决了:)
【参考方案1】:
如果您在表格视图中使用UITableViewController
,“When the table view is about to appear the first time it’s loaded, the table-view controller reloads the table view’s data.”
“If you choose not to use UITableViewController
for table-view management, you must replicate what this class gives you ‘for free.’”
第二个链接中的示例代码在设置其委托和数据源后将reloadData
发送到表。也许在 iOS 4 中,表格视图在加载时会自动重新加载,而在 iOS 5 中它已更改为与文档匹配。
【讨论】:
以上是关于UITableView 未显示运行 iOS 5 的 iPad的主要内容,如果未能解决你的问题,请参考以下文章
iOS:UITableView 表数据未显示在子类别中:iPhone
在 iOS8 的 Interface Builder 中向 UITableView 添加静态单元格?内容部分未显示
iOS 帮助:UITableViewCell 类的自定义设计未显示在 UITableView 中
IOS 蓝牙 LE 扫描设备未添加到 uitableview