嘿,我一直在研究交通应用程序一段时间,现在已经被这个问题困扰了一段时间。
我正在使用 iOS 5 和故事板。基本上,当用户选择我使用的一行时,我有一个 UITableView 显示最喜欢的巴士站位置:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Favorite *favorite = [self.favoriteItems objectAtIndex:indexPath.row];
stopString = favorite.title;
routeString = favorite.subtitle;
}
使用用户选择的单元格的停止和路线信息,然后我准备一个与我的故事板上的转场相对应的转场,推动一个使用停止名称和路线名称的详细视图控制器来显示来自 plist 的时间。
我对 Objective C 和 iOS 还很陌生,所以我正在使用我朋友告诉我的 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 之后,我在视图 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);
}
这就是我的问题出现的地方。当我运行模拟器并单击表格视图中的一个单元格时,我被推送到 DVC,但是,stopName 和 routeName 都是空的,因此没有发送或接收任何信息。但是,如果我返回表格并单击另一个单元格,则 routeName 和 stopName 将填充我第一次单击单元格时应该发送的信息。如果我继续这个过程,它会继续发送之前点击过的单元格的信息,而不是当前。
所以基本上信息正在发送,但只有在我经历了两次 segue 之后。显然我希望它在第一时间发送和接收信息,但它被延迟了,让我抓狂。我很感激有人可以给我的任何帮助,因为我已经在互联网上搜索了几天试图解决这个问题,非常感谢您的任何帮助!