-3
我有一个UITableView
当你选择一行时,它会引导你进入所选行的“细节”。但是,第一次点击该行时,它会进入prepareForSegue
方法,而不会呼叫didSelectRowAtIndexPath
。当我在详细信息视图上按下后退按钮时,该应用会返回,如果再次选择该行,该方法将被调用。didSelectRowAtIndexPath不是第一次调用
我是不是使用didDeselectRowAtIndexPath
。
这个模式将继续,我不明白为什么。当我加载我的数据时,我打电话给[tableview reloadData]
。
我也试着将self.TagsTableView.allowsMultipleSelection = YES;
加到我的viewDidLoad
方法中。
这里是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
self.bluetoothManager = [[BlueToothLEManager alloc] init];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableView:) name:@"ScanComplete" object:nil];
self.Tags = self.bluetoothManager.Tags;
NSLog(@"Fetch Tags: %@", self.Tags);
}
...
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = [fetchTagsTableView dequeueReusableCellWithIdentifier:@"tagCell"];
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"tagCell"];
}
FetchTag* newTag = [fetchTags objectAtIndex:indexPath.row];
cell.textLabel.text = [NSString stringWithFormat:@"%@ %d", newTag.tagName, indexPath.row];
cell.detailTextLabel.text = [newTag.tagUUID UUIDString];
return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
selectedTagFromTable = [fetchTags objectAtIndex:indexPath.row];
[TagsTableView deselectRowAtIndexPath:indexPath animated:YES];
}
...
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
if([[segue identifier] isEqualToString:@"DetailView"]){
TagDetailViewController* ftdvc = [segue destinationViewController];
[ftdvc setSelectedTag:selectedTagFromTable];
}
// Pass the selected object to the new view controller.
}
-(void)reloadTableView:(NSNotification*)notif{
NSLog(@"Reloading Table View");
NSLog(@"Fetch Tags: %@", self.Tags);
[self.TagsTableView reloadData];
}
所以,你希望使用故事板segue自动导航选择_and_调用'didSelectRowAtIndexPath'?我不确定我会相信这一点。我建议删除自动segue,而是手动调用segue(或手动执行导航)_in_'didSelectRowAtIndexPath'。 – matt
你甚至使用自定义单元格?您是否预先填充代码中的其他位置的“fetchTagsTableView”单元格(即UITableViewCell * cell = [fetchTagsTableView dequeueReusableCellWithIdentifier:@“tagCell”];)? –
相关:http://stackoverflow.com/q/18165684/335858 – dasblinkenlight