Обновление : вероятно, вы должны создавать подкласс UITableViewCell, а не UITableView. Затем в методе cellForRowAtIndexPath:
контроллера табличного представления верните экземпляр этого подкласса, а не экземпляр UITableViewCell.
Вам также нужно будет передать указатель DetailViewController в ячейку, чтобы можно было вызывать его метод moveToNextItem
в методах touchesBegan
и т. Д.
Адаптируйте этот пример к вашим потребностям:
MyTableViewCell.h
@class DetailedViewController;
@interface MyTableViewCell : UITableViewCell {
DetailedViewController *dvc;
}
@property (nonatomic, retain) DetailedViewController *dvc;
@end
MyTableViewCell.m
#import "MyTableViewCell.h"
#import "DetailedViewController.h"
@implementation MyTableViewCell
@synthesize dvc;
- (void)someMethod { // This would be your touchesBegan, etc. methods
[dvc moveToNextItem];
}
- (void)dealloc {
[dvc release]; // We retained dvc so we have to release it when we're done with it
[super dealloc];
}
@end
DetailedViewController.h
@interface DetailedViewController : UITableViewController {
// iVars here
}
// Methods and properties here
- (void)moveToNextItem;
@end
DetailedViewController.m
#import "DetailedViewController.h"
#import "MyTableViewCell.h"
@implementation DetailedViewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyTableViewCell"];
if(cell == nil) {
cell = [[[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyTableViewCell"] autorelease];
cell.dvc = self; // This gives the cell a reference to the detailed view controller
}
return cell;
}
- (void)moveToNextItem {
// ...
}
@end
Возможно, есть гораздо лучшие способы добиться того, чего вы хотите, но это лучшее, что я могу сделать без дополнительной информации.