私がやっていることは、UITableViewの現在選択されている行をUITabelViewの別のビューコントローラに渡すことです。これは、(種類の)動作しますが、私の変数が相互に馬跳びを再生している(いくつかの理由でオフ1であるように見える。)「現在選択されている行」を新しいビューコントローラに渡す(ちょっとした作業 - 1遅れて)
例:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
chosenProject = [[self activeProjectsList] objectAtIndex:[indexPath row]];
self.selectedProject = chosenProject;
[self setSelectedProject:self.selectedProject];
NSLog(@"PROJECT: %@",chosenProject); // Returns correctly.
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"ShowShots"]) {
NSLog(@"CURRENT: %@",chosenProject); // Returns NULL?
ShotListViewController *slVC = [segue destinationViewController];
slVC.outputName = self.selectedProject;
}
}
初めてそれはNULLを返しますので、それは奇妙です、再度試してみると、最初に表示されるはずの最後に選択された行が返されます。NULLではありません。
私は、prepareForSegueが送信される前に変数が設定されていないと推測しています。なぜなら、受信時に常に1つ遅れているように見えるからです。
私はこれについて間違っているでしょうか、1つの変数を渡すだけですか?
最初に新しいviewControllerで値を保持するvarをalloc'ingしinit'ingしているのですか、それとも最初のビューで設定されていますか? – CodaFi
また、 '[self setSelectedProject:self.selectedProject];はselectedProjectを自分自身に設定しているので、絶対に何もしません。 – lnafziger