草庐IT

iphone - 选中时选中的 UItableViewCell 保持蓝色

coder 2023-04-25 原文

当我在用户选择 UITableView 行后推送 View 时,该行会突出显示蓝色,然后出现新 View 。没关系。但是当我“返回”时,该行仍然以蓝色突出显示。这是我的 didSelectRowAtIndexPath 代码。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    SettingsViewController *controller = [[SettingsViewController alloc] initWithNibName:@"SettingsView" bundle:nil];
    [[self navigationController] pushViewController:controller animated:YES];
    [controller release], controller = nil; 
}

我做错了什么?

最佳答案

正如上面的答案所指出的,您需要明确取消选择该行。关于如何执行此操作,您有两种选择。第一种,是在选择后立即取消选择行:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  ...
  [tableView deselectRowAtIndexPath:indexPath animated:YES];
}

这会很好用,但是有一个替代方法,它是 UITableViewController 采用的方法,即保留选中的行,然后在 View 重新出现时取消选择它(在 Controller 之后你're push 会从堆栈中弹出)。

这有一点好处,即用户在返回时可以看到他们之前的选择,因此他们可以看到他们之前选择的内容。

要实现这一点,您只需要重写 viewWillAppear:

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  [self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES];
}

正如我所说,如果您使用 UITableViewControllerUITableViewControllerviewWillAppear: em>没有看到这种行为,你应该检查你是否在你的类自己的 viewDidAppear: 中调用 super 实现。

更新(2013 年 10 月 30 日):嗯,这是一个流行的答案!正如 Ben 在评论中正确指出的那样,UITableViewController 实际上在 viewWillAppear: 而不是 viewDidAppear: 中执行此操作 - 这是正确的时机。此外,您可以使用 UITableViewController 的 clearsSelectionOnViewWillAppear 属性打开和关闭此行为。我已经修改了上面的答案以反射(reflect)这一点。

关于iphone - 选中时选中的 UItableViewCell 保持蓝色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2803061/

有关iphone - 选中时选中的 UItableViewCell 保持蓝色的更多相关文章

  1. ruby - 当 attr_accessor 在类方法中时会发生什么? - 2

    所以我想到了这个,想知道当下面的一些事情完成后会发生什么。classTestdefself.abcattr_accessor:Johnendendobject=Test.newputs"beforecallingclassmethodabc:#{object.class.instance_methods(false)}"Test.abcputs"aftercallingclassmethodabc:#{object.class.instance_methods(false)}"这里我检查的是,getter和setter方法是否以这种方式创建。如果是这样,是那些实例方法或类方法。首先我创

  2. ruby - 如何保持我不常用的编程语言技能 - 2

    关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby​​-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby​​有很大不同。由于我与ruby​​之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?

  3. ruby - 下拉菜单在应该被选中的时候没有被选中……为什么? - 2

    我正在尝试解决我们测试中的一个错误,我认为它应该有效。我很确定这是selectize或capybara中的错误,但我不明白为什么。我已经进入了capybara的源代码,一切似乎都在正常工作。我真的不确定如何前进。为了测试这个错误,我已经尽可能地把这个错误剥离成一个小的testapplication.请参阅下面的设置bugs/show.html.erbOneTwoThreeFourOneTwoThreeFourbug_spec.rbfeature'bug'doit"specsetup",js:truedovisitbug_pathfind('div.selectize-inputinpu

  4. ruby - 当 (key => value) 存储在数组中时的哈希赋值? ( ruby ) - 2

    我有散列的散列(@post),我想在其中保持散列键在数组(@post_csv_order)中的顺序,还想保持关系键=>数组中的值。我不知道数组中@post哈希和key=>value元素的最终数量。我不知道如何在循环中为数组中的所有元素分配散列。一个接一个@post_csv_order[0][0]=>@post_csv_order[0][1]效果很好。#require'rubygems'require'pp'@post={}forum_id=123#onlysamplevalues....tomakethissamplescriptworkpost_title="Testpost"@po

  5. Ruby 数组 - 如何使值在 nil 值上保持不变 - 2

    我正在处理一系列midi音高,看起来像这样......pitches=[60,nil,nil,nil,67,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil]在这种情况下,索引1、2和3上的间距仍然是60。索引4之后,音高仍然是67。如何编写一个方法来识别先前的非零值?目前我能想到的唯一方法看起来有点笨拙:defpitch_at_step(pitches,step)ifpitches.any?x=pitches[step]

  6. ruby - 使用 RVM,当 gems 安装在不同的 ruby​​ 版本中时,bundler 不会安装在正确的 gemset 中 - 2

    我在使用rvm、bundler和gemsets时遇到问题。我在rvm中安装了3个ruby:rvmrubiesmacruby-0.7.1[x86_64]ree-1.8.7-2010.02[x86_64]=>ruby-1.9.2-p0[x86_64]像这样的gemsets:rvmgemsetsmacruby-0.7.1[x86_64]ree-1.8.7-2010.02[x86_64]ree-1.8.7-2010.02@chef[x86_64]ree-1.8.7-2010.02@global[x86_64]ree-1.8.7-2010.02@mobi[x86_64]ree-1.8.7-201

  7. iphone - 扩展 restful_authentication/AuthLogic 以支持匿名 iPhone 的延迟登录的最佳方法是什么? - 2

    我正在构建一个与RubyonRails后端对话的iPhone应用程序。RubyonRails应用程序还将为Web用户提供服务。restful_authentication插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望iPhone应用程序的用户在新列中存储一个由手机的唯一标识符([[UIDevicedevice]uniqueIdentifier])自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用iPhone应用程序,因为该应用程序可以使用它的标识符

  8. ruby - Sinatra 不会在 Chrome 上通过重定向保持 session - 2

    Sinatra没有在Chrome上通过重定向保留我的session。它正在创建一个全新的session,我正在丢失我以前的所有session数据。举个例子(类似于theSinatradocs),我正在做这样的事情:enable:sessionsget'/foo'dosession[:user_id]=123session[:session_id]#"ABC",forexampleredirectto('/bar')endget'/bar'do#thisis"DEF"whenrespondingtoChrome(wrong),#but"ABC"whenrespondingtoFirefo

  9. ruby - ruby 是否有一个列表类型可以在添加/删除时保持内容排序? - 2

    我需要一个Ruby中的数据结构,在添加或删除元素时保持其元素排序,并允许(至少)能够从列表中弹出第一个元素。我在ruby​​文档中找到的最接近的是SortedSet.但是,这似乎没有提供任何方式来通过索引访问元素(甚至弹出第一个元素)这些是我需要的具体操作:将对象添加到列表从列表中弹出第一个对象检查一个对象是否在列表中从列表中删除对象(按对象,而不是按索引)ruby是否为此内置了任何东西,或者是否有任何我可以获取的库可以提供给我?我可以毫不费力地实现一个,但如果可能的话,我宁愿使用一个已经存在的。目前我使用的是Ruby1.8,但切换到1.9可能没问题。编辑:由于似乎有些困惑,我需要的排

  10. iphone - 设计和 Rails 3 中的 http 身份验证 - 2

    我有一个使用deviseonrails3的应用程序。我想启用http身份验证,以便我可以从iPhone应用程序向我的网络应用程序进行身份验证。如何从我的iPhone应用程序进行身份验证以进行设计?这安全吗?还是我应该进行不同的身份验证? 最佳答案 从设计的角度来看,您有3个选择:1)使用基本的http身份验证:您的iPhone应用程序有一个secretkey-这是在您的iPhone应用程序代码中烘焙的-用于对网络应用程序的每个请求进行身份验证。Google搜索:“设计基本的http身份验证”2)您可以通过在您的iPhone应用程序中

随机推荐