0

我有一个UIButton叫做 as 的UploadButton。我正在使用以下代码行来处理单击它时应该发生的操作::

-(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是我制作的一个单独的课程。它具有以下功能::

- (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;
}

基本上,我想要的只是在单击 my时显示 a UItableViewinside a 。UIPopOverControllerUploadButton

但是,在运行上述代码行时,我在 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:

这是我第一次尝试UITableViewUIPopoverController. 我在代码中尝试了很多变体,但是我无法对其进行排序。有人可以帮我吗 ??谢谢并恭祝安康。

4

4 回答 4

0

问题是以下行:

self.keys1 = [NSMutableArray array];

UploadSpaceTableViewController没有方法 setKeys / 没有属性键。

编辑第二条错误消息:

UITableView dataSource 必须从 tableView:cellForRowAtIndexPath 返回一个单元格:

这意味着您应该实现该UITableViewDataSource方法tableView:cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //configure your cell here

    return myCongiuredTableViewCell;
}
于 2012-06-27T08:33:32.793 回答
0

该错误意味着您在为 keys1, 赋值时传递了一个无效参数self.keys1 = ...。例如,如果您将 NSMutableArray 传递给 NSDictionary 属性,您将收到该错误。

于 2012-06-27T08:34:39.690 回答
0

你有没有分配你的单元格,我认为你的代码会返回 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;
}

这可能会帮助你...

于 2012-06-27T08:59:43.600 回答
0

在 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;

}

我认为这可能对你有帮助。

于 2012-06-27T09:01:01.153 回答