В моем табличном представлении у меня есть несколько разных пользовательских ячеек. В одном из них есть кнопка. Эта кнопка вызывает другой контроллер представления. Однако это не требуется, пока табличное представление не будет полностью загружено. В cellForRowAtIndexPath я настроил все свои различные пользовательские ячейки. Я могу раскомментировать [buttonCell.myButton setHidden:YES]; и он скроет мою кнопку. Смотри ниже.
else if (indexPath.section == 3)
{
ButtonCell *buttonCell = [tableView dequeueReusableCellWithIdentifier:@"ButtonCell"];
//[buttonCell.myButton setHidden:YES];
cell = buttonCell;
}
return cell;
Однако я хочу затем показать кнопку после загрузки таблицы. Я заканчиваю загрузку всех своих массивов в другом методе, где я вызываю reloadData. В этом методе я попытался показать кнопку, сделав это.
[ButtonCell.myButton setHidden:NO];
Но компилятор выдает мне предупреждение, что свойство myButton не найдено в ButtonCell. У кого-нибудь есть идеи, как показать мою кнопку. Что я делаю не так, и что у меня не получается! Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ 1
Мой класс кнопочных ячеек... .h #import
@interface ButtonCell : UITableViewCell
@property (strong, nonatomic) IBOutlet UIButton *myButton;
- (IBAction)YDI:(id)sender;
@end
.m
#import "ButtonCell.h"
#import "AnotherWebViewController.h"
@implementation ButtonCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
- (IBAction)YDI:(id)sender
{
}
@end
РЕДАКТИРОВАТЬ 2
С помощью всех, кто ответил (спасибо всем), я продвинулся немного дальше, но кнопка не показывает себя. Поэтому я все еще прячу кнопку в cellForRowAtIndexPath, которая работает как надо. Затем в моем методе, в котором я перезагружаю данные, я помещаю следующий код.
NSIndexPath *index = [NSIndexPath indexPathForRow:0 inSection:3];
ButtonCell *buttonCell = (ButtonCell *) [self.tableView cellForRowAtIndexPath:index];
[buttonCell.myButton setHidden:NO];
ButtonCell с кнопкой всегда является четвертым разделом (считая первый за 0) и имеет только одну строку. Любая другая помощь будет оценена по достоинству. Почти готово!
РЕДАКТИРОВАТЬ 3 Понял! Однако именно благодаря комментарию я смог это понять. Спасибо @A-Live. Хотя я знаю, как получить ячейку методом вне cellForRowAtIndexPath благодаря ElJay. Так что я даю ему чек, так как я узнал что-то новое, поэтому мы все равно публикуем вопросы. Итак, внутри моего метода cellForRowAtIndexPath я скрываю/показываю кнопку. У меня есть BOOL в моем приложении, называемом завершенным, изначально для него установлено значение true. Когда табличное представление завершает загрузку, для него устанавливается значение false. Поэтому я просто использовал это логическое значение, чтобы показать/скрыть кнопку.
else if (indexPath.section == 3)
{
ButtonCell *buttonCell = [tableView dequeueReusableCellWithIdentifier:@"ButtonCell"];
if (!_finished)
{
[buttonCell.myButton setHidden:YES];
}else{
[buttonCell.myButton setHidden:NO];
}
cell = buttonCell;
}
return cell;
И снова это только часть моего метода cellForRowAtIndexPath. Еще раз спасибо за помощь. Я был удивлен, увидев так много ответов! Спасибо.
cellForRowAtIndexPath
, вы, естественно, ее не увидите, вам нужно показать кнопку и там. - person A-Live   schedule 13.06.2013