質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

1回答

1779閲覧

Editボタンを押した際にアニメーション効果がなくならないようにしたい。

ThanksThankyou

総合スコア11

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/10/20 15:03

編集2016/10/20 15:21

Editボタンを押した際のアニメーション効果がなくならないようにしたい

swift2でiPhoneアプリの開発をしています。
tableViewControllerのcellの編集をする際、editボタンを押すと、cellのtitleLabelがtextFieldに変わり、titleをユーザーが修正できるようにしたいと考えております。
その際、下記のように書かれていた編集ボタン押下時のコードに

override func setEditing(editing: Bool, animated: Bool) { super.setEditing(editing, animated: animated) tableView.setEditing(editing, animated: animated) }

下記のようにtableView.reloadData()を付け加えることで処理自体は狙い通り動いたのですが、Editボタンを押した際のアニメーション効果がなくなってしまいました。

override func setEditing(editing: Bool, animated: Bool) { super.setEditing(editing, animated: animated) tableView.setEditing(editing, animated: animated) tableView.reloadData() }

どのような改善をすると、Editボタンを押した際にアニメーション効果が保たれるようになるでしょうか??お手すきの際にお教え頂けますとありがたいです。

開発に利用しているXcodeのバージョンは7.3.1、Swift2で開発をしております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2016/10/20 23:52

アニメーション、titleLabelからtextFieldへの変更、以上の2点についてもう少し具体的に書いて下さい。
ThanksThankyou

2016/10/21 11:58

コメント頂き、ありがとうございます!!もう少し具体的に書いてみたいと思います。少々お待ちくださいませ☆
guest

回答1

0

ベストアンサー

reloadするとセルが新たに生成し直されるのでアニメが消えてしまうのでしょう。
アニメが終了するのを待ってからreloadするか、reloadしなくても済むような実装にしましょう。

投稿2016/10/20 23:53

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ThanksThankyou

2016/11/12 11:45 編集

ご指導大変ありがとうございました。状況を詳細にご説明しようとしていたのですが、なるべく秘密裏に開発をしたいという事情もあり、返信するのが遅くなり申し訳ございません。 その後、色々と調べていたところ、下記の情報とほぼ同じ症状でして、こちらをswift3で記述できれば問題が解決するように感じております。 http://anton0825.hatenablog.com/entry/20120522/1338958864 ただ、この [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.5f]; をswift3で記述するにはどのようにしたら良いでしょうか? 現状、tableView.perform(aSelector: reloadData, with: nil, afterDelay: 0.5)と記述しましたが、 Use of unresolved identifier 'reloadData' というエラーが発生しております。 お手すきの際にお教え頂けますと大変ありがたいです。
fuzzball

2016/11/12 15:06

色々確認出来なくてアレなのですが、performSelectorはSwiftに無かったと思うので、下記のコードでどうでしょうか?(0.5秒の遅延処理です) DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { tableView.reloadData() }
ThanksThankyou

2016/11/12 16:28 編集

fuzzballさま、早速ご返信頂きまして、ありがとうございました☆(^▽^)☆ お教え頂いたコードで無事に問題解決いたしました!! 長いこと悩まされていたので、本当に感動です...。 色々と情報提供不足で申し訳ございません。 この度は本当にありがとうございました!!☆(^0^)☆
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問