iPhone更改滑动以删除按钮标题

时间:2011-01-06 23:28:18

标签: iphone uitableview

我得到你需要使用以下方法并返回你想要的新标题作为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

我不会把所有代码放在那里,但是一切都按照应有的方式运行,但我仍然删除作为我的按钮的标题,而不是关闭。< / p>

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 个答案:

答案 0 :(得分:4)

这是UITableView的委托方法。您需要在类中实现它,该实例被设置为TableView的委托。

尝试将TableView的delegate - 属性设置为PositionsController的实例。

答案 1 :(得分:0)

您正在使用的方法是为UITableViewDelegate定义的,因此您需要为作为UITableView的委托的类定义它。

答案 2 :(得分:0)

首先,我不知道TTTableController是否正在做任何不同的事情,所以你可能会遇到问题。

您正在使用的功能仅影响实际单元格上的按钮标题(即,滑动以删除,或在用户点击减号按钮后),而不是tableView上方的编辑按钮。

如果您想更改tableView上方的按钮,我相信您需要创建自己的按钮并自行实施setEditing:animated:功能。

有关详细信息,请参阅此处:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html

编辑: 您正在使用的功能应该在TableView的委托中。