2014-12-24 42 views
-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]; 
} 
+1

所以,你希望使用故事板segue自动导航选择_and_调用'didSelectRowAtIndexPath'?我不确定我会相信这一点。我建议删除自动segue,而是手动调用segue(或手动执行导航)_in_'didSelectRowAtIndexPath'。 – matt

+0

你甚至使用自定义单元格?您是否预先填充代码中的其他位置的“fetchTagsTableView”单元格(即UITableViewCell * cell = [fetchTagsTableView dequeueReusableCellWithIdentifier:@“tagCell”];)? –

+0

相关:http://stackoverflow.com/q/18165684/335858 – dasblinkenlight

回答

0

我将不得不把代码从didSelectRowAtIndexPath方法:到prepareForSegue:而不是尝试使用发件人参数来识别一个选择的标签

相关问题