iPhone меняя пальцем, чтобы удалить заголовок кнопки - PullRequest
3 голосов
/ 07 января 2011

Я понял, что вам нужно использовать следующий метод и вернуть то, что вы хотите, чтобы новый заголовок был в виде строки NSString.Однако я не знаю, где поставить этот метод.Где он обычно находится?

- (NSString *)tableView:(UITableView *)tableView 
   titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return @"Close";
}

Я пробовал это в моем TableViewController , и он не работает:

интерфейс

#import <Three20/Three20.h>

@interface PositionsController : TTTableViewController {
}

@end

реализация

#import "PositionsController.h"
#import "NetworkController.h"
#import "PositionsDataSource.h"

@implementation PositionsController

- (id) init {
    if (self = [super init]) {
        self.variableHeightRows = NO;
    }

    return self;
}

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return @"Close";
}

@end

Я не буду помещать туда весь код, тем не менее, все работает так, как должно, но я все равно получаю Удалить в качестве заголовка для моей кнопки, а не Закрыть .

Пересмотренный рабочий код библиотеки Three20

Проблема, с которой я столкнулся, заключается в том, что я использовал TTTableViewDragRefreshDelegate для своих UITableView * делегировать.Я делал это с помощью следующего метода:

- (id<UITableViewDelegate>)createDelegate {
        return [[[TTTableViewDragRefreshDelegate alloc] initWithController:self] autorelease];
}

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

Пересмотренный метод PositionsController.m createDelegate

- (id<UITableViewDelegate>)createDelegate {
     return [[[PositionsTableDelegate alloc] initWithController:self] autorelease];
 }

PositionsTableDelegate.h

#import <Three20/Three20.h>


@interface PositionsTableDelegate : TTTableViewDragRefreshDelegate <UITableViewDelegate> {

}

@end

PositionsTableDelegate.m

#import "PositionsTableDelegate.h"


@implementation PositionsTableDelegate

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return @"Close";
}

@end

Ответы [ 3 ]

4 голосов
/ 07 января 2011

Это делегированный метод UITableView.Вам необходимо реализовать его в классе, экземпляр которого установлен в качестве делегата вашего TableView.

Попробуйте установить для свойства delegate TableView экземпляр PositionsController.

0 голосов
/ 07 января 2011

Во-первых, я не знаю, делает ли TTTableController что-то другое, поэтому ваша проблема может лежать там.

Используемая функция влияет только на заголовок кнопки на фактической ячейке (т. Е. На удаление, или после того, как пользователь нажал кнопку минус), а не на кнопку «Изменить» над tableView.

Если вы хотите изменить кнопку над tableView, я полагаю, вам нужно будет создать собственную кнопку и реализовать функцию setEditing:animated: самостоятельно.

Смотрите здесь для получения дополнительной информации: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html

Edit: Используемая вами функция должна быть в делегате TableView.

0 голосов
/ 07 января 2011

Метод, который вы используете, определен для UITableViewDelegate, поэтому вам нужно определить его для класса, который является делегатом для вашего UITableView.

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