Delegeler gidilecek yol.
Diğer yanıtlarda görüldüğü gibi, görünümleri kullanarak modası geçmiş olabilir. Yarın kim bilir başka bir sargı olabilir ve kullanması gerekebilir cell superview]superview]superview]superview]
. Etiketleri kullanırsanız, hücreyi tanımlamak için başka koşul varsa n sayısıyla sonuçlanırsınız. Tüm bu delegeleri kurmaktan kaçınmak için. (Bunu yaparak, yeniden kullanılabilir bir hücre sınıfı oluşturacaksınız. Temel sınıfla aynı hücre sınıfını kullanabilirsiniz ve tek yapmanız gereken temsilci yöntemlerini uygulamaktır.)
Öncelikle, düğme tıklamaları iletişim kurmak için (temsilci) hücre tarafından kullanılacak bir arayüze (protokole) ihtiyacımız var. ( Protokol için ayrı bir .h dosyası oluşturabilir ve hem tablo görünümü denetleyicisine hem de özel hücre sınıflarına dahil edebilirsiniz VEYA dosyayı yine de tablo görünümü denetleyicisine dahil edilecek özel hücre sınıfına ekleyebilirsiniz )
@protocol CellDelegate <NSObject>
- (void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data;
@end
Bu protokolü özel hücre ve tablo görünümü denetleyicisine ekle. Tablo görünümü denetleyicisinin bu protokolü onayladığından emin olun.
Özel hücrede iki özellik oluşturun:
@property (weak, nonatomic) id<CellDelegate>delegate;
@property (assign, nonatomic) NSInteger cellIndex;
In UIButton
IBAction temsilci tıklama: ( aynı görüntü denetleyicisi geri devredilen gereken özel hücre sınıfında herhangi bir işlem için yapılabilir )
- (IBAction)buttonClicked:(UIButton *)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOnCellAtIndex:withData:)]) {
[self.delegate didClickOnCellAtIndex:_cellIndex withData:@"any other cell data/property"];
}
}
cellForRowAtIndexPath
Hücreyi ayıkladıktan sonra tablo görünümü denetleyicisinde , yukarıdaki özellikleri ayarlayın.
cell.delegate = self;
cell.cellIndex = indexPath.row; // Set indexpath if its a grouped table.
Temsilciyi tablo görünümü denetleyicisine uygulayın:
- (void)didClickOnCellAtIndex:(NSInteger)cellIndex withData:(id)data
{
// Do additional actions as required.
NSLog(@"Cell at Index: %d clicked.\n Data received : %@", cellIndex, data);
}
Bu, tablo görünümü denetleyicisinde özel hücre düğmesi eylemleri almak için ideal bir yaklaşım olacaktır.