このコードをデバッグしようとすると、最も奇妙なことが起こります。
- (IBAction)showNextMeal:(id)sender {
unsigned int flags = NSHourCalendarUnit | NSMinuteCalendarUnit;
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:flags fromDate:[NSDate date]];
NSDate* currentTime = [calendar dateFromComponents:components];
NSArray* todays = [self MealsForDay:DayOfWeek];
int segueid = 0;
for (int i = 0; i < 3; i++) {
NSDate * startTime = [calendar dateFromComponents:[calendar components:flags fromDate:[[todays objectAtIndex:i] End]]];
NSComparisonResult c = [currentTime compare:startTime];
if (c == NSOrderedAscending) {
segueid = i;
break;
}
}
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:segueid inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
[self performSegueWithIdentifier:@"MealSegue" sender:self];
}
コードは最後から 3 行目 ( ) まで正常に実行され、NSIndexPath* indexPath
ジャンプしint segueid = 0
て再度実行されます。その後、iPhone は同じ場所への 2 つのセグエを実行します。
私が話していることを正確に見ることができるように、デバッグをスクリーンキャプチャしました。
http://www.youtube.com/watch?v=3SR-O5Xhsqk
コンピューターがコードを飛び回るのはなぜですか? また、同じ場所で 2 つのセグエを実行するのはなぜですか?