gpt4 book ai didi

iphone - 尝试重写 Objective-C 中的方法时出现问题 (iPhone)

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:25 24 4
gpt4 key购买 nike

这是我的问题,我有一个继承 UITableViewController 类的 X 类和一个继承 X 类的 Y 类,当我尝试覆盖 Y 类中的方法时,调用 X 类中的方法......我可以找不到引用资料以了解正在发生的事情......任何人都可以帮助我吗?

提前致谢!

代码!

mluListBuilder.h

#import <UIKit/UIKit.h>

@interface mluListBuilder : UITableViewController {
NSString *sListTitle;
NSString *sEntityName;
NSArray *aEntityProperties;
NSMutableArray *maListRecords;
NSManagedObjectContext *mocList;
NSFetchRequest *frListRecords;
NSEntityDescription *edListRecords;
NSArray *aOrderByProperties;
NSArray *aToolBarItems;
NSArray *aToolBarItemsActions;
}

@property (nonatomic, retain) NSString *sListTitle;
@property (nonatomic, retain) NSString *sEntityName;
@property (nonatomic, retain) NSArray *aEntityProperties;
@property (nonatomic, retain) NSMutableArray *maListRecords;
@property (nonatomic, retain) NSManagedObjectContext *mocList;
@property (nonatomic, retain) NSFetchRequest *frListRecords;
@property (nonatomic, retain) NSEntityDescription *edListRecords;
@property (nonatomic, retain) NSArray *aOrderByProperties;
@property (nonatomic, retain) NSArray *aToolBarItems;
@property (nonatomic, retain) NSArray *aToolBarItemsActions;


- (id) initWithStyle: (UITableViewStyle) style
listTitle: (NSString *) psListTitle
entityName: (NSString *) psEntityName
entityProperties: (NSArray *) paEntityProperties
orderListByProperties: (NSArray *) paOrderByProperties
toolBarItems: (NSArray *) paToolBarItems
toolBarItemsActions: (NSArray *) paToolBarItemsActions;

- (void)newRecord;
- (void)deleteRecord;

@end

mluListBuilder.m

#import "mluListBuilder.h"

@implementation mluListBuilder

@synthesize sListTitle,
sEntityName,
aEntityProperties,
maListRecords,
mocList,
frListRecords,
edListRecords,
aOrderByProperties,
aToolBarItems,
aToolBarItemsActions;


- (id) initWithStyle: (UITableViewStyle) style
listTitle: (NSString *) psListTitle
entityName: (NSString *) psEntityName
entityProperties: (NSArray *) paEntityProperties
orderListByProperties: (NSArray *) paOrderByProperties
toolBarItems: (NSArray *) paToolBarItems
toolBarItemsActions: (NSArray *) paToolBarItemsActions
{

sListTitle = psListTitle;
sEntityName = psEntityName;
aEntityProperties = paEntityProperties;
aOrderByProperties = paOrderByProperties;
aToolBarItems = paToolBarItems;
aToolBarItemsActions = paToolBarItemsActions;

if (self = [super initWithStyle:style]) {
}
return self;
}

- (void)viewDidLoad {
self.title = NSLocalizedString(sListTitle, nil);

if ([aToolBarItems count] > 0) {
NSMutableArray *maToolBarItems = [[NSMutableArray alloc] init];
self.navigationController.toolbarHidden = NO;
for (int i = 0; i < [aToolBarItems count]; i++) {
UIBarButtonItem * bbiToolBarItem = [[UIBarButtonItem alloc]
initWithTitle:NSLocalizedString([aToolBarItems objectAtIndex:i], nil)
style:UIBarButtonItemStyleBordered
target:self
action:NSSelectorFromString([aToolBarItemsActions objectAtIndex:i])
];


[maToolBarItems addObject:bbiToolBarItem];
}
self.toolbarItems = maToolBarItems;
} else {
self.navigationController.toolbarHidden = YES;
}

if (mocList != nil) {
frListRecords = [[NSFetchRequest alloc] init];

NSSortDescriptor *sdListRecords = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];

[frListRecords setSortDescriptors:[[NSArray alloc] initWithObjects:sdListRecords, nil]];

edListRecords = [NSEntityDescription entityForName:sEntityName inManagedObjectContext:mocList];

[frListRecords setEntity:edListRecords];

NSError *errFetchRequest;
maListRecords = [[mocList executeFetchRequest:frListRecords error:&errFetchRequest] mutableCopy];
}
[super viewDidLoad];
}

- (void)viewWillAppear:(BOOL)animated {
NSError *errFetchRequest;
maListRecords = [[mocList executeFetchRequest:frListRecords error:&errFetchRequest] mutableCopy];
[self.tableView reloadData];

if (self.navigationController.toolbarHidden == YES) {
if ([aToolBarItems count] > 0) {
self.navigationController.toolbarHidden = NO;
}
}
}

- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}


#pragma mark Table view methods

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}


// Customize the number of rows in the table view.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [maListRecords count];
}


// Customize the appearance of table view cells.
- (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] autorelease];
}

for (UIView *vwExisting in cell.contentView.subviews) {
[vwExisting removeFromSuperview];
}

NSEntityDescription *edCurrentRecord = [maListRecords objectAtIndex:indexPath.row];

UILabel *lblCell = [[UILabel alloc] initWithFrame:CGRectMake(5.0, 5.0, 280, 20.0)];
[lblCell setText:edCurrentRecord.name];

[cell.contentView addSubview:lblCell];

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

return cell;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic may go here. Create and push another view controller.
// AnotherViewController *anotherViewController = [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil];
// [self.navigationController pushViewController:anotherViewController];
// [anotherViewController release];
}

- (void)dealloc {
[super dealloc];
}

- (void)newRecord {
NSLog(@"%@", [self class]);
}

- (void)deleteRecord {

}

@end

mluLawyerCaseSituationsList.h

#import <Foundation/Foundation.h>
#import "mluListBuilder.h";

@interface mluLawyerCaseSituationsList : mluListBuilder {

}

- (void)newRecord;

@end

mluLawyerCaseSituationsList.m

#import "mluLawyerCaseSituationsList.h"

@implementation mluLawyerCaseSituationsList

- (void)newRecord {
NSLog(@"%@", [self class]);
}

@end

调用 mluLawyerCaseSituationsList

mluLawyerCaseSituationsList *vcCaseSituations = [[mluListBuilder alloc]
initWithStyle:UITableViewStylePlain
listTitle:@"titCaseSituations"
entityName:@"case_situations"
entityProperties:[[NSArray alloc] initWithObjects:@"name", nil]
orderListByProperties:[[NSArray alloc] initWithObjects:@"name", nil]
toolBarItems:[[NSArray alloc] initWithObjects:@"btNew", nil]
toolBarItemsActions:[[NSArray alloc] initWithObjects:@"newRecord", nil]
];

输出...:(

2009-12-17 17:30:02.726 mluLawyer[2862:20b] mluListBuilder

希望对你有帮助

最佳答案

我只是简单地浏览了您的代码,但很明显(从代码和输出来看)您分配了类 X (mluListBuilder) 的实例。

当然,当 Y 派生自 X 且对象属于 X 类时,您不能期望拥有类 Y (mluLawyerCaseSituationsList) 的方法。

关于iphone - 尝试重写 Objective-C 中的方法时出现问题 (iPhone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1923720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com