我从2009年开始继承了一个iOS应用程序。我目前正在为它创建一个新的UI。在其中一个视图控制器中,我有一个UITableView。
在旧版本的应用程序中,一些必需的表视图方法实现如下:
#pragma mark -
#pragma mark Table View Methods
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SpeciesCell";
SpeciesCell* speciesCell = (SpeciesCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!speciesCell)
{
speciesCell = [[[SpeciesCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
speciesCell.frame = CGRectMake(0.0, 0.0, 320.0, ROW_HEIGHT);
}
[speciesCell setDrawShortSeparator];
Species *theSpecies = [fetchedResultsController objectAtIndexPath:indexPath];
[speciesCell setSpecies:theSpecies usingImageType:currentImageType sortBy:sortBySegmentedControl.selectedSegmentIndex];
return speciesCell;
}
(以上代码适用于应用的当前用户界面。)
我尝试将cellForRowAtIndexPath
方法放在我的新视图控制器中。不幸的是,我一直在Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCell setDrawShortSeparator]: unrecognized selector sent to instance
。这个错误当然意味着我是一个不响应该方法的对象的方法。
#import "SecondViewController.h"
#import "Species.h"
#import "SpeciesTableViewCell.h"
#import "SpeciesCell.h"
/*#import "HomeViewController.h"
#import "BrowseHelpViewController.h"
#import "Species.h"
*/
@interface SecondViewController () <UITableViewDataSource, UITableViewDelegate>{
}
@end
@implementation SecondViewController
@synthesize fetchedResultsController, managedObjectContext;
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
UIImage *btnImage1 = [UIImage imageNamed:@"Pear.png"];
_left_button.tag = 1;
[_left_button setImage:btnImage1 forState:UIControlStateNormal];
[_search_bar sizeToFit];
[self fetchResultsUsingSegmentedControlIndex];
}
/* other methods */
#pragma mark - UITableView DataSource Methods
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
//NSLog(@"number of rows %lu", (unsigned long)[sectionInfo numberOfObjects]);
return [sectionInfo numberOfObjects];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [[fetchedResultsController sections] count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"SpeciesCell";
SpeciesCell* speciesCell = (SpeciesCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!speciesCell)
{
speciesCell = [[[SpeciesCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
speciesCell.frame = CGRectMake(0.0, 0.0, 320.0, ROW_HEIGHT);
}
[speciesCell setDrawShortSeparator];
Species *theSpecies = [fetchedResultsController objectAtIndexPath:indexPath];
[speciesCell setSpecies:theSpecies usingImageType:currentImageType sortBy:sortBySegmentedControl.selectedSegmentIndex];
return speciesCell;
}
@end
但是,我没有在UITableViewCell对象上调用setDrawShortSeparator
方法 - 我在speciesCell
上调用它,SpeciesCell
类是SpeciesCell.h
类的对象。在我的ViewController顶部,我导入{% if is_granted('IS_AUTHENTICATED_FULLY') %}
// show logout link
{% else %}
// show register link
{% endif %}
。
我很感激所有见解!谢谢。
答案 0 :(得分:0)
查找包含该单元格视图的文件,并将其类设置为 SpeciesCell 类。如果你使用任何 IBOutlets ,你也应该连接它们。