iPhone更改滑动删除按钮标题

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

我不会把所有的代码都放在这里,尽管一切都按照预期运行,但我的按钮标题仍然是“Delete”而不是“Close”。

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

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

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


好的,除此之外,将<UITableViewDelegate>添加到PositionsController.h文件中就可以了。我有一些格式问题,但这正是我想要的。谢谢! - zkwentz

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

他不想禁用滑动删除功能,他想要更改按钮的标题。 - jsadfeew
有点过于急于按下投票反对按钮了。我正在编辑答案的过程中,刚刚意识到自己误读了问题。 - westsider

0
首先,我不知道TTTableController是否有任何不同之处,所以你的问题可能出在那里。
你正在使用的函数只会影响实际单元格上的按钮标题(例如滑动删除或用户点击减号按钮后),而不是tableView上方的编辑按钮。
如果你想改变tableView上方的按钮,我认为你需要创建自己的按钮并自己实现setEditing:animated:功能。
更多信息请参见这里:http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html 编辑: 你正在使用的函数应该在TableView的代理中。

是的,我想在实际单元格上进行更改,我的最佳猜测是320库可能处理方式不同。但我是新手,所以我的猜测并不多。 - zkwentz
好的,出于这样那样的原因,我不使用320库!我建议你首先仔细检查一下你的titleForDeleteConfirmationButtonForRowAtIndexPath方法是否被成功调用。 - Domestic Cat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接