tableView が didSelectRowAtIndexPath メソッドを起動しないという問題があります。デリゲートを次のように実装しました。
@interface ViewController : UIViewController<UITableViewDataSource, UITableViewDelegate,UIScrollViewDelegate>
そして、私のストーリーボードでは、tableView のデータ ソースとデリゲートの両方がベース ビュー コントローラーを指しています。ユーザー インタラクションを有効にし、選択を単一選択に設定しました。タップ ジェスチャがビューにバインドされておらず、チェックしても起動しないため、TapGesture の問題ではありません。
これは、テーブルをセットアップするためのコードです。
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return menuArray.count;
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"menuCell"];
NSDictionary *menuItem = [menuArray objectAtIndex:indexPath.row];
cell.textLabel.text = menuItem[@"Title"];
cell.detailTextLabel.text = menuItem[@"Subtitle"];
return cell;
}
-(void)showMenu{
[UIView animateWithDuration:.25 animations:^{
[content setFrame:CGRectMake(menuTable.frame.size.width, content.frame.origin.y, content.frame.size.width, content.frame.size.height)];
}];
}
-(void)hideMenu{
[UIView animateWithDuration:.25 animations:^{
[content setFrame:CGRectMake(0, content.frame.origin.y, content.frame.size.width, content.frame.size.height)];
}];
}
-(IBAction)showMenuDown:(id)sender {
if(content.frame.origin.x == 0)
[self showMenu];
else
[self hideMenu];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//whatever
}
テーブルは最初はストーリーボードで表示されていません (origin.x は -150 に設定されています)。その後、ユーザーがナビゲーションバーのボタンをクリックすると、ビューがスライドして表示されます。これが問題の原因となっている可能性があります。考える。
これが機能しない原因となるコードまたは実装に何か問題がありますか?