iPad:iOS5 的 Popover 示例
Posted
技术标签:
【中文标题】iPad:iOS5 的 Popover 示例【英文标题】:iPad:Popover sample to iOS5 【发布时间】:2012-02-27 13:32:55 【问题描述】:我正在开发一款可在 iPhone 和 iPad 上使用的应用程序。
今天我发现我应该在操作表上使用 Popover for iPad 而不是 PickerView。
我正在尝试在 ios5 上使用示例应用程序,但出现错误;
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因: '-[UITableViewController loadView] 加载了“2-view-5”笔尖,但没有得到 UITableView。' *** 首先抛出调用栈:
你知道我到底需要做什么来解决这个问题吗? 还有,你有什么推荐的 iOS5 的 popover 例子吗?
UYLMasterViewController.m
#import "UYLMasterViewController.h"
#import "UYLDetailViewController.h"
@implementation UYLMasterViewController
@synthesize detailViewController = _detailViewController;
#pragma mark -
#pragma mark === View Management ===
#pragma mark -
- (void)viewDidUnload
[super viewDidUnload];
self.detailViewController = nil;
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation
return YES;
#pragma mark -
#pragma mark === Table View Delegates ===
#pragma mark -
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return 20;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSUInteger row = [indexPath row];
cell.textLabel.text = [NSString stringWithFormat:@"Item %u", row+1];
return cell;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
NSUInteger item = [indexPath row] +1;
NSNumber *detailItem = [NSNumber numberWithInteger:item];
if (self.detailViewController)
self.detailViewController.detailItem = detailItem;
@end
【问题讨论】:
【参考方案1】:如果您没有修改示例应用程序中的任何内容,这很奇怪。 无论如何,当我忘记设置从表到控制器 UITableViewController 的 IBOutlet 连接时,我通常会收到此错误。
很可能是你误删了它,或者 Xcode 由于某种原因失去了连接(这种情况发生了)。
查看 UYLMasterViewController.h 是否为 UITableViewController。如果是,那么 UITableView 必须是 nib 文件中的第一个视图,直接连接到控制器的 'view' IBOutlet 属性。 否则,如果 UITableView 在 UIView 内,那么您会得到您提到的确切错误。
一个可能的解决方案,如果 UITableView 不是主视图,将 UYLMasterViewController 设置为普通 UIViewController 并给它所有的委托访问器,然后从 UITableView 拖一个连接到控制器,你会看到你有两个选项委托和数据源,你需要两者。
【讨论】:
嗨,我找不到任何适用于 iOS5 的示例,因此使用适用于 ios4 的示例。所以当我下载一个示例时,我必须转换适合 ios5 的代码。我创建了 IBOutlet 并连接到页面上的 tableView,没有运气。 嗯,你要连接的控制器是 UITableViewController 吗?如果是,应该已经有一个名为 tableView 的属性,您应该将 UITableView 连接到该属性,而不是创建一个新的。 不确定我需要什么表格视图。我编辑了我正在使用的示例代码(它是其中之一......而不是苹果的),并使用故事板。我不知道如何在 ViewController 上连接 tableview。 如果您创建一个新项目并使用“Utility”模板并设置为 Universal,它在 iPhone 中使用模态视图作为全屏,在 iPad 中作为弹出框使用。这就是我要开始的地方,因为你正在寻找一个例子。 这很棒,因为它只使用 1 个 NIB。以上是关于iPad:iOS5 的 Popover 示例的主要内容,如果未能解决你的问题,请参考以下文章