- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
嘿,我已经在一个交通应用程序上工作了一段时间,现在已经被这个问题困扰了一段时间。
我正在使用 iOS 5 和 Storyboard。基本上我有一个 UITableView 显示最喜欢的公交车站位置,当用户选择我使用的行时:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Favorite *favorite = [self.favoriteItems objectAtIndex:indexPath.row];
stopString = favorite.title;
routeString = favorite.subtitle;
}
有了用户选择的单元格的停靠站和路线信息,然后我准备了一个与我的 Storyboard上的一个 segue 相对应的 segue,推送一个使用停靠站名称和路线名称的详细 View Controller 来显示 plist 中的时间。
我对 Objective C 和 iOS 还很陌生,所以我正在使用我 friend 告诉我可以使用的 segue,但是,这可能是问题所在。转场看起来像这样:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UIViewController *destination = segue.destinationViewController;
if ([destination respondsToSelector:@selector(setDelegate:)])
{
[destination setValue:self forKey:@"delegate"];
}
if ([destination respondsToSelector:@selector(setSelection:)])
{
NSString *route = routeString;
NSDictionary *selection1 = [NSDictionary dictionaryWithObjectsAndKeys:route, @"route", stopString, @"stop", nil];
[destination setValue:selection1 forKey:@"selection"];
}
}
在我的 DetailViewController 中进行 segue 之后,我在 View DidLoad 中获取停靠站和路线信息:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
route = [selection objectForKey:@"route"];
stopName = [selection objectForKey:@"stop"];
NSLog(@"stopName: %@", stopName);
NSLog(@"routeName: %@", route);
}
这是我的问题出现的地方。当我运行模拟器并单击 TableView 中的一个单元格时,我被推送到 DVC,但是,stopName 和 routeName 均为空,因此没有发送或接收任何信息。但是,如果我返回表格并单击另一个单元格,则 routeName 和 stopName 将填充我第一次单击单元格时应该发送的信息。如果我继续这个过程,它会继续发送之前点击的单元格的信息,而不是当前。
所以基本上信息正在发送,但只有在我经过两次 segue 之后才会发送。显然,我希望它在第一时间发送和接收信息,但它被延迟了,让我抓狂。我很感激有人能给我的任何帮助,因为我已经在互联网上搜索了好几天,试图解决这个问题,在此先感谢您的任何帮助!
最佳答案
prepareForSegue:
在 didSelectRowAtIndexPath:
之前被调用。这就是为什么你看到的值(value)观总是落后的原因。
更好的解决方案是在 prepareForSegue:
方法中获取 stopString 和 routeString 值(根本不使用 didSelectRowForIndexPath:
)。这样做的关键是要意识到传递给 prepareForSegue:
的 sender
参数值是被点击的 UITableViewCell。您可以使用 UITableView 方法 indexPathForCell
获取表格中单元格的 indexPath,然后使用它来查找 favoriteItems
数组中的数据。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UITableViewCell *cell = (UITableViewCell*)sender;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
Favorite *favorite = [self.favoriteItems objectAtIndex:indexPath.row];
stopString = favorite.title;
routeString = favorite.subtitle;
UIViewController *destination = segue.destinationViewController;
if ([destination respondsToSelector:@selector(setDelegate:)])
{
[destination setValue:self forKey:@"delegate"];
}
if ([destination respondsToSelector:@selector(setSelection:)])
{
NSString *route = routeString;
NSDictionary *selection1 = [NSDictionary dictionaryWithObjectsAndKeys:route, @"route", stopString, @"stop", nil];
[destination setValue:selection1 forKey:@"selection"];
}
}
关于ios - UITableView 仅在第二次尝试时将数据发送到 Detail View Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11980738/
我对 Swift 比较陌生。我在 pickerView 中使用 PFQuery 时遇到了问题。 我正在尝试实现一个 2 组件 pickerView,如下所示: 组件 0:组件 1 “A”:“Altiv
packageUrl="http://192.168.0.112" packageUrl_line=`grep -n "packageUrl" ${file} | head -1 | cut -d "
我遇到了一个烦人的问题。我正在做一个消息传递应用程序。在消息页面中,当用户滚动到顶部时,一旦最上面的单元格可见,它将加载更多消息以显示。因为在加载更多消息时, TableView 的位置在顶部(内容偏
可以屏蔽吗 Jsoup.connect("http://xyz.com").get().html(); 作为对网站的浏览器调用? 我尝试构建一个壁纸下载工具,但在从服务器下载页面时遇到问题。 如果我下
IntelliJ 给了我以下代码的提示: val l = List(0, "1", 2, "3") l.foreach{_ match {case xx:Int => println(xx);case
我正在尝试读取使用三个水平点表示缺失值的 excel 文件,例如... https://population.un.org/wpp/Download/Files/1_Indicators%20(Sta
我有一个 NSPopupButton,其内容绑定(bind)到 NSArray,假设该数组是 @[ @"Option 1", @"Option 2" ]; 其选择的对象绑定(bind)
大家好,我希望您能回答这个问题:) 基本上,我的index.html中有一些html 5视频,并且会自动播放背景音频。 我想发生的是在播放视频标签时将背景音频减少到50%。如果可能的话,如果我可以使用
需要一点帮助来解决这个问题。我的目标是拥有一个可执行的 jar 文件,它可以截取网页的屏幕截图,并且可以在 Windows 和 Linux 机器上运行。我尝试过使用 html2image 但 phan
我知道如何将 comboBox 值插入到 sql 中,但不知道如何在 sql 中用数字替换 comboBox 值。 这是我的组合框编码和处理按钮的一部分。 用户.java JComboBox com
我有一个像这样的 XML 片段: WEL SMIO 01/01/2015 12/31/9999 AAE 01/01/2015
好的,我知道每个人都认为 IFrame 不好,我知道这一点。但我“被要求”在极少数情况下使用一个。 所以我的问题是,当您有一个包含 IFrame 的 .aspx 页面,然后在该 IFrame 中有另一
我有一个 React 应用程序,我在其中使用 axios 库来获取一些值,并将它们设置为处于我状态的 javascript 对象数组 componentDidMount(){ axios.
我必须存储我的 HashMap通过Spring data导入数据库MySql。为了从 HashMap 检索数据,我使用键值,并且可能会发生键不存在的情况,在这种情况下,我必须避免使用 set 方法将值
我有 Size 模型,其中 value 作为字符串。我想根据 value 属性通过将其转换为十进制来排序 size。 has_many :sizes, -> {order 'value ASC'},这
嗨,我有一个 MYSQL 表,例如 PART{ part_id :long,Auto Increment parent_part_id :long root_part_id :long } 我需
我正在尝试将列名为“邮政编码”、“2010 年人口”、“Land-Sq-Mi”和“每平方英里密度”的 CSV 文件导入我的测试表,该表名为 derp--这就是我在开头使用 drop 语句的原因,这样我
我想写一个这样的存储过程: CREATE OR REPLACE FUNCTION my_function(param_1 text, param_2 text DEFAULT NULL::text)
我有一个 RecyclerView,在它之上,有一个 AdView。滚动 RecyclerView 时,我想将 Adview 留在固定位置。我该怎么做? 这是我打开应用程序时的 RecyclerVie
我有一个 UIScrollView,其中包含一个 UIView 容器,该容器包含多个 UITextField。 我想执行以下操作:如果我选择一个字段并且它位于键盘下方,则将文本字段提升到键盘上方 20
我是一名优秀的程序员,十分优秀!