Ich versuche in diesen Dateien Artikel zum Warenkorb hinzuzufügen. Ich habe benutzerdefinierte Tabellenzelle und verknüpfte sie mit IBOutlets im Storyboard. Irgendwie erreicht der Debugger die delegate-Methode innerhalb des deletegating-Objekts, geht jedoch nicht weiter zu TableVC, wo diese Methode konform ist und keine Protokolle angezeigt werden.TableViewCellDelegate wird nicht aufgerufen
// SeatTableViewCell.h
#import <UIKit/UIKit.h>
#import "SeatTableViewCellDelegate.h"
@interface SeatTableViewCell : UITableViewCell
@property (nonatomic, assign) id<SeatTableViewCellDelegate> delegate;
@property (nonatomic, weak) IBOutlet UILabel *rowLabel;
@property (nonatomic, weak) IBOutlet UILabel *seatLabel;
@property (nonatomic, weak) IBOutlet UILabel *priceLabel;
@property (nonatomic, weak) IBOutlet UIImageView *addToBasketImageView;
@end
// SeatTableViewCell.m
#import "SeatTableViewCell.h"
@implementation SeatTableViewCell
@synthesize rowLabel, seatLabel, priceLabel, addToBasketImageView;
- (void)awakeFromNib {
[super awakeFromNib];
UITapGestureRecognizer *singleImageTap = [[UITapGestureRecognizer alloc] initWithTarget:
self action:@selector(addToBasketTapDetected:)];
singleImageTap.numberOfTapsRequired = 1;
[self.addToBasketImageView addGestureRecognizer:singleImageTap];
}
- (void)addToBasketTapDetected: (UIGestureRecognizer *)sender {
//HERE the debugger stops, after step into nothing happens
[self.delegate tableViewCell:self didSelectImageView:self.addToBasketImageView];
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end
// SeatTableViewCellDelegate.h
@protocol SeatTableViewCellDelegate <NSObject>
- (void)tableViewCell:(UITableViewCell *)cell didSelectImageView:(UIImageView *)imageView;
@end
// ChooseSeatTableViewController.h
#import <UIKit/UIKit.h>
#import "SeatGroup.h"
#import "SeatTableViewCellDelegate.h"
@interface ChooseSeatTableViewController : UIViewController<UITableViewDataSource, UITableViewDelegate, SeatTableViewCellDelegate>
- (IBAction)onBackPressed:(id)sender;
- (IBAction)OnChooseSectorClicked:(id)sender;
-(void)reloadData:(SeatGroup *)selectedSeatGroup;
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (nonatomic, strong) SeatGroup *seatGroup;
@property (nonatomic, strong) NSString* perfUUID;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tableHeightConstraint;
@property (nonatomic, strong) NSMutableArray* seats;
@end
// ChooseSeatTableViewController.m
#import "ChooseSeatTableViewController.h"
#import "ConcertDescriptionViewController.h"
#import "SeatTableViewCell.h"
@interface ChooseSeatTableViewController()
@property (nonatomic, strong) NSMutableArray *selectedIndexPathes;
@property (strong) Seat* currentSeat;
@end
@implementation ChooseSeatTableViewController
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
int volume = self.seats.count;
return volume;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
_currentSeat = [_seats objectAtIndex:indexPath.row];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *identifier = @"seatCell";
//todo try fix bug with dequing indexes
SeatTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];
Seat *cur = [_seats objectAtIndex:indexPath.row];
_currentSeat = cur;
cell.rowLabel.text = cur.rowNum;
cell.seatLabel.text = cur.seatNum;
NSArray* piecesOfPrice = [cur.price componentsSeparatedByString: @","];
if (piecesOfPrice.count > 1) {
cur.price = [piecesOfPrice objectAtIndex:0];
}
NSMutableString *prm = [cur.price mutableCopy];
[prm appendString:@" p"];
cell.priceLabel.text = prm;
[cell.addToBasketImageView setUserInteractionEnabled:YES];
if ([self.selectedIndexPathes containsObject:indexPath]) {
//set basket selected
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"rectangle_21_copy_5" ofType:@"png"];
UIImage *priceBckgImg = [[UIImage alloc] initWithContentsOfFile:thePath];
cell.addToBasketImageView.image = priceBckgImg;
} else {
//set basket unselected
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"rectangle_21_copy_6" ofType:@"png"];
UIImage *priceBckgImg = [[UIImage alloc] initWithContentsOfFile:thePath];
cell.addToBasketImageView.image = priceBckgImg;
}
return cell;
}
- (void)tableViewCell:(UITableViewCell *)cell didSelectImageView:(UIImageView *)imageView {
//HERE the debugger doesnt reach
NSLog(@"Hi, debugger in didSelectImageView");
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
if (![self.selectedIndexPathes containsObject:indexPath]) {
[self.selectedIndexPathes addObject:indexPath];
}
NSString *thePath = [[NSBundle mainBundle] pathForResource:@"rectangle_21_copy_5" ofType:@"png"];
UIImage *priceBckgImg = [[UIImage alloc] initWithContentsOfFile:thePath];
[imageView setImage:priceBckgImg];
[self.tableView reloadData];
}
.. Warum aufgerufen wird mein Protokoll isn?
stellen Sie sicher, Ihre Stellvertretung – Rajesh
im Debugger ist nicht gleich Null helfen kann ich 0, aber nicht null _delegate \t id \t 0x0 \t 0x00000000 – AlexInspired
was bedeutet, dass Sie kein Objekt haben. Dies ist eine sehr grundlegende Frage. Es wird nicht ermutigt, solche Fragen hier zu stellen. – Rajesh