无法在PopOverController中填充TableView – Objective C
我有一个名为UploadButton
的UIButton
。 我正在使用以下几行代码来处理点击时应该发生的操作::
-(IBAction)UploadButtonPressed:(id)sender{ self.Upload = [[UploadSpaceTableViewController alloc] initWithStyle:UITableViewStylePlain]; self.UploadTableViewPopover = [[UIPopoverController alloc] initWithContentViewController:Upload]; [self.UploadTableViewPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; }
在这里, UploadSpaceTableViewController
是我所做的一个独立的类。 它有以下function::
- (void)viewDidLoad { [super viewDidLoad]; self.clearsSelectionOnViewWillAppear = NO; self.contentSizeForViewInPopover = CGSizeMake(150.0, 140.0); self.keys1 = [NSMutableArray array]; [keys1 addObject:@"Red"]; [keys1 addObject:@"Green"]; [keys1 addObject:@"Blue"]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [keys1 count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // Configure the cell... NSString *key1 = [keys1 objectAtIndex:indexPath.row]; cell.textLabel.text = key1; return cell; }
基本上,我想要的是在单击我的UItableView
在UIPopOverController
显示一个UploadButton
。
但是,在运行上面的代码行我得到以下错误在gdb ::
splitView[4486:f803] *** Assertion failure in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1914.84/UITableView.m:6061 2012-06-27 14:05:05.531 splitView[4486:f803] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UITableView dataSource must return a cell from tableView:cellForRowAtIndexPath:
这是我第一次尝试在UIPopoverController
显示UITableView
。 我已经在代码中尝试了很多变体,但是我无法将其整理出来。 有人可以帮我吗 ?? 感谢致敬。
你有没有分配你的单元格,我认为你的代码会返回nill
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if(cell == nill){ cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } // Configure the cell... NSString *key1 = [keys1 objectAtIndex:indexPath.row]; cell.textLabel.text = key1; return cell; }
可能这会帮助你…
这个错误意味着当你给keys1, self.keys1 = ...
分配一个值时,你传递了一个无效的参数。 如果你是,例如,传递一个NSMutableArray到一个NSDictionary属性,你会得到这个错误。
问题是以下行:
self.keys1 = [NSMutableArray array];
您的UploadSpaceTableViewController
没有方法setKeys /没有属性键。
编辑第二个错误消息:
UITableView数据源必须从tableView中返回一个单元格:cellForRowAtIndexPath:
这意味着你应该实现UITableViewDataSource
方法tableView:cellForRowAtIndexPath:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //configure your cell here return myCongiuredTableViewCell; }
在cellForRowAtIndexPath中使用以下代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // Configure the cell... if( cell == nil ) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSString *key1 = [keys1 objectAtIndex:indexPath.row]; cell.textLabel.text = key1; return cell; }
我认为这可能对你有帮助。
- 如何从UICollectionViewCell访问UICollectionView中Cell的indexPath
- Swift:协议扩展中的静态属性可以被覆盖,但为什么?
- 检测连接的audio设备的iOS
- iOS 7中的UITabBar色调
- 如何使NSAssert在Xcode4中logging说明?
- 从xcode3切换到xcode4 – 无法加载程序到旧的iPod Touch上
- SecTrustEvaluate始终使用SecPolicyCreateSSL返回kSecTrustResultRecoverableTrustFailure
- string不能转换为
- iOS应用程序可以使用wsHttpBinding来使用WCF服务吗?