Как добавить кнопку без использования пользовательской ячейки на UITableView? - PullRequest
2 голосов
/ 12 мая 2009

Как добавить пользовательскую кнопку на UITableViewCell, а затем удалить ячейку с этой кнопкой, не используя Interface Builder и Custom Cell?

Ответы [ 2 ]

8 голосов
/ 14 мая 2009

Если вы действительно хотите добавить пользовательскую кнопку БЕЗ подклассов, просто добавьте кнопку в contentView ячейки:

[cell.contentView addSubview:customButton];

Вы можете установить все характеристики кнопки: рамка, цель, селектор и т. Д. Затем Ad использовал вышеуказанный вызов, чтобы добавить его в ячейку.

UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
customButton.frame=//whatever
[customButton setImage:anImage forState:UIControlStateNormal];
[customButton setImage:anotherImage forState:UIControlStateHighlighted];
[customButton addTarget:self action:@selector(delete) forControlEvents: UIControlEventTouchUpInside];
//yadda, yadda, .....

Вы также можете пометить его

customButton.tag = 99999;

Так что вы можете найти его позже:

UIButton *abutton = (UIButton*) [cell.contentView viewWithTag:99999];

Вам необходимо решить, КОГДА добавить кнопку, возможно, при выборе ячейки, может быть, в режиме редактирования ... просто поместите код в выбранный вами метод делегата.

1 голос
/ 12 мая 2009

Если единственная цель кнопки состоит в том, чтобы предложить удаление, вам следует обратиться к UITableViewDataSource, который имеет метод с именем - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath. Реализуйте это так:

    - (BOOL)tableView:(UITableView *)tableView 
canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
   return YES; 
}

А затем реализовать:

 - (void)tableView:(UITableView *)tableView 
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
 forRowAtIndexPath:(NSIndexPath *)indexPath 
{
   // Database removal code goes here...
}

Чтобы использовать эти методы, позвольте вашему UITableViewController реализовать протокол UITableViewDataSource, выполнив что-то вроде:

MyClass : UITableViewController <UITableViewDataSource>

в вашем заголовочном файле, и не забудьте установить источник данных viewController на self.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...