iPhone 上的“拉动刷新”无法按预期工作

发布于 2024-10-16 06:52:45 字数 1426 浏览 6 评论 0原文

我一直在使用这个: http://blog.leahculver.com /2010/12/iphone-pull-to-refresh.html 在我的应用程序中实现拉动刷新功能。 但我看不到“下拉刷新...”、“释放刷新...”和“正在加载...”等文字。

我所做的就是将文件复制到我的项目中,链接到 QuartzCore 框架,并更改视图控制器的 .h 文件,使其成为 PullRefreshTableViewController 的子类。然后我添加了刷新方法。

似乎 PullRefreshTableViewController 中的 initWithStyle 方法永远不会被执行。 但我应该是,在我的 tableViewcellForRowAtIndexPath 中。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

cell.textLabel.text = @"Text";

return cell; }

PullRefreshTableViewController.m 中的 initWithStyle 方法:

- (id)initWithStyle:(UITableViewStyle)style {
self = [super initWithStyle:style];
if (self != nil) {
    textPull = [[NSString alloc] initWithString:@"Pull down to refresh..."];
    textRelease = [[NSString alloc] initWithString:@"Release to refresh..."];
    textLoading = [[NSString alloc] initWithString:@"Loading..."];
    NSLog(@"in");
}
NSLog(@"out");
return self; }

日志永远不会打印在控制台中

我真的看不出问题出在哪里?

I have been using this: http://blog.leahculver.com/2010/12/iphone-pull-to-refresh.html to make the pull to refresh function in my app.
But I cant see the text "Pull down to refresh...", "Release to refresh..." and "Loading...".

All I've done is copy the files into my project, link against QuartzCore framework, and changed the .h file of my view controller so it is a subclass of PullRefreshTableViewController. Then I added the refresh method.

Is seems that the initWithStyle method in PullRefreshTableViewController never is executed.
But i should be, in my tableViewcellForRowAtIndexPath.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

cell.textLabel.text = @"Text";

return cell; }

The initWithStyle method from the PullRefreshTableViewController.m:

- (id)initWithStyle:(UITableViewStyle)style {
self = [super initWithStyle:style];
if (self != nil) {
    textPull = [[NSString alloc] initWithString:@"Pull down to refresh..."];
    textRelease = [[NSString alloc] initWithString:@"Release to refresh..."];
    textLoading = [[NSString alloc] initWithString:@"Loading..."];
    NSLog(@"in");
}
NSLog(@"out");
return self; }

The logs are never printed in the console

I really cant see where the problem is ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自控 2024-10-23 06:52:45

有同样的问题。
发现不是调用 initWithStyle 而是调用 initWithCoder....

因此为了解决您的问题,请在 PullRefreshTableViewController.m 中插入以下代码
它就像一个魅力

-(id)initWithCoder:(NSCoder *)aDecoder{
NSLog(@"initWithCoder");
self = [super initWithCoder:aDecoder];
if (self != nil) {
    textPull = [[NSString alloc] initWithString:@"Pull down to refresh..."];
    textRelease = [[NSString alloc] initWithString:@"Release to refresh..."];
    textLoading = [[NSString alloc] initWithString:@"Loading..."];
}
return self;
}

最好的问候

Had the same problem.
figured out that not initWithStyle is called instead initWithCoder is called....

so to solve your problem insert following code in your PullRefreshTableViewController.m
and it works like a charm

-(id)initWithCoder:(NSCoder *)aDecoder{
NSLog(@"initWithCoder");
self = [super initWithCoder:aDecoder];
if (self != nil) {
    textPull = [[NSString alloc] initWithString:@"Pull down to refresh..."];
    textRelease = [[NSString alloc] initWithString:@"Release to refresh..."];
    textLoading = [[NSString alloc] initWithString:@"Loading..."];
}
return self;
}

best regards

我三岁 2024-10-23 06:52:45

如果您正在寻找定义文本的位置,它位于 PullRefreshTableViewController.m 的第 43 行

希望这会有所帮助(如果确实如此,请不要忘记投票我的答案)

M。

If you're looking for where the text is defined, it is on Line 43 of the PullRefreshTableViewController.m

Hope this helps (if it does don't forget to vote my answer up)

M.

旧时浪漫 2024-10-23 06:52:45

尝试使用以下方法实例化 PullRefreshTableViewController:

PullRefreshTableViewController *tableViewController = [[PullRefreshTableViewController alloc] initWithStyle:UITableViewStylePlain];

使用 initWithSyle 实例化 UITableViewCell 不会对 UITableViewController 子类产生任何影响。

另一种方法是编辑 PullRefreshTableViewController 类以重写 - (id)init 方法,其方式与 initWithStyle 类似:

Try instantiating the PullRefreshTableViewController with:

PullRefreshTableViewController *tableViewController = [[PullRefreshTableViewController alloc] initWithStyle:UITableViewStylePlain];

Instantiating the UITableViewCell using initWithSyle won't have any affect on your UITableViewController subclass.

The alternative is to edit the PullRefreshTableViewController class to override - (id)init method in a similar manner as done with initWithStyle:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文