サブクラス化されたプロトタイプセルで作成されたテーブルビューを管理するためのUITableViewControllerがあります。最も関連するコードは次のとおりです。
MyCell.h
#import <UIKit/UIKit.h>
@interface ScrollViewTableCellInShorTrip : UITableViewCell
@end
MyCell.m
#import "MyCell.h"
@implementation SMyCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event
{
NSLog(@"touch cell");
[super touchesEnded: touches withEvent: event];
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
}
}
@end
TableViewController.h
#import <UIKit/UIKit.h>
@interface TableViewController : UITableViewController{
}
@property (nonatomic, retain) NSArray *arr;
@end
TableViewController.m
#import "TableViewController.h"
#import "MyCell.h"
@implementation ATripTableViewController
@synthesize arr;
- (void)viewDidLoad
{
[super viewDidLoad];
self.arr = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
CellIdentifier = @"myCell";
MyCell *myCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
return myCell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"detailView"sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"detailView"]){
NSLog(@"arr acount is %d", self.arr.count);//program received signal: "EXC_BAD_ACCESS".
}
}
prepareForSegue:sender:メソッドで "NSLog(@" arr acount is%d "、self.arr.count)"を呼び出すと、EXC_BAD_ACCESSエラーメッセージが表示されます。プロパティ「arr」が現在無料であることは明らかです。そして、この状況は、サブクラス化されたUITableViewCellを使用した場合にのみ表示されます。
答えに感謝します!