私の方法では、既に表示されている場合にビューを閉じるために、ユーザーがセルを選択したときdidSelectRowAtIndexPath
に呼び出します。[self dismissView];
これは明らかにあまり最適ではなく、dismissView をアニメーション化せずに presentView メソッドをオーバーライドしています。これを行うより良い方法はありますか?または、少なくとも NSTimer を使用せずに、ビューのアニメーションが終了するのを待ちます。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
[self dismissView];
// Do xyz...
[self presentView:twitterLinksView];
それで..
- (void)presentView:(id)sender
{
twitterLinksView.frame = CGRectMake(0, (self.view.frame.size.height + viewHeight), 320, 300);
[UIView animateWithDuration:0.60f animations:^{
CGRect twitterLinkFrame = self.twitterLinksView.frame;
twitterLinkFrame.origin.y = (self.view.frame.size.height - viewHeight);
twitterLinksView.frame = twitterLinkFrame;
}];
}
- (void)dismissView
{
[UIView animateWithDuration:0.75f animations:^{
CGRect twitterLinkFrame = self.twitterLinksView.frame;
twitterLinkFrame.origin.y = (self.view.frame.size.height + viewHeight);
self.twitterLinksView.frame = twitterLinkFrame;
}];
}