-3
행을 선택하면 선택한 행의 "세부 정보"로 연결되는 UITableView
이 있습니다. 그러나 행을 처음 클릭하면 prepareForSegue
메서드로 들어가고 didSelectRowAtIndexPath
메서드는 호출되지 않습니다. 자세히보기에서 뒤로 버튼을 누르면 응용 프로그램이 돌아가고 행을 다시 선택하면 메서드가 호출됩니다.didSelectRowAtIndexPath가 처음으로 호출되지 않았습니다.
저는 didDeselectRowAtIndexPath
을 사용하여 이 아닌입니다.
이 글은 계속 될 것이며 이유를 알 수 없습니다. 데이터를로드 할 때 [tableview reloadData]
으로 전화합니다.
또한 self.TagsTableView.allowsMultipleSelection = YES;
을 내 viewDidLoad
방법에 추가하려고했습니다. 나는 didSelectRowAtIndexPath의 코드를 넣어 것
- (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];
}
를 식별하기 위해 보낸 매개 변수를 사용하십시오 스토리 보드에서 선택한 항목을 자동으로 탐색하고 'didSelectRowAtIndexPath'를 호출합니까? 나는 그것을 신뢰할 것이라고 확신하지 못한다. 나는 자동 segue를 지우고 segue를 수동으로 호출하는 것 (또는 수동으로 탐색하는 것)을 제안한다. _in_'didSelectRowAtIndexPath'. – matt
그리고 맞춤형 셀을 사용하고 있습니까? 코드의 다른 부분 인 "fetchTagsTableView"셀 (예 : UITableViewCell * cell = [fetchTagsTableView dequeueReusableCellWithIdentifier : @ "tagCell"];)을 미리 채우고 있습니까? –
관련 자료 : http://stackoverflow.com/q/18165684/335858 – dasblinkenlight