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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1559閲覧

ボタンを押した時にエラーが出てアプリが落ちてしまいます

HAL49

総合スコア7

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/03/30 02:02

編集2016/03/30 02:04

###前提・実現したいこと
swiftの入門者向けレッスンで擬似Twitter系アプリを作っています。
送信ボタンを押した時に投稿用入力ウィンドウが消えて、セル上に名前と入力テキストが表示される、という機能を付けたいのですが、送信ボタンを押した時点でアプリが落ちてしまいます。

宜しくお願い致します。

###ソースコード

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!

let backTweetView = UIView() let textField = UITextField() let textView = UITextView() var tweetArray: Array<Dictionary<String, String>> = [] override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. tableView.delegate = self tableView.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //-------------TableViewの処理------------------ func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tweetArray.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("myCell")! let tweet = tweetArray[indexPath.row] let nameLabel = cell.viewWithTag(1) as! UILabel nameLabel.text = tweet["name"] nameLabel.font = UIFont(name: "HirakakuProN-W6", size: 13) let textLabel = cell.viewWithTag(2) as! UILabel textLabel.text = tweet["text"] textLabel.font = UIFont(name: "HirakakuProN-W6", size: 18) let timeLabel = cell.viewWithTag(3) as! UILabel timeLabel.text = tweet["time"] timeLabel.font = UIFont(name: "HirakakuProN-W3", size: 10) timeLabel.textColor = UIColor.grayColor() let myImageView = cell.viewWithTag(4) as! UIImageView myImageView.image = UIImage(named: "pug") myImageView.layer.cornerRadius = 3 myImageView.layer.masksToBounds = true return cell } //-------------ボタンがタップされた時の処理--------- @IBAction func tapTweetBtn(sender: UIButton) { let backTweetView = makeBackTweetView() self.view.addSubview(backTweetView) let tweetView = makeTweetView() backTweetView.addSubview(tweetView) let textField = makeTextField() tweetView.addSubview(textField) let textView = makeTextView() tweetView.addSubview(textView) let nameLabel = makeLabel("名前", y: 5) tweetView.addSubview(nameLabel) let tweetLabel = makeLabel("ツイート内容", y: 85) tweetView.addSubview(tweetLabel) let submitBtn = makeSubmitBtn() tweetView.addSubview(submitBtn) let cancelBtn = makeCancelBtn(tweetView) tweetView.addSubview(cancelBtn) } func tappedCancelBtn(sender: AnyObject){ backTweetView.removeFromSuperview() } func tappedSubmitBtn(sender :AnyObject){ let name = textField.text let tweet = textView.text print("名前:\(name)、ツイート内容:\(tweet)") var tweetDic: Dictionary<String, String> = [:] tweetDic["name"] = textField.text! tweetDic["text"] = textView.text tweetDic["time"] = "2015/11/21" tweetArray.append(tweetDic) backTweetView.removeFromSuperview() textField.text = "" textView.text = "" tableView.reloadData() } //-------------部品の生成のための処理-------------- func makeBackTweetView() -> UIView { backTweetView.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height) backTweetView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.6) return backTweetView } func makeTweetView() -> UIView { let tweetView = UIView() tweetView.frame.size = CGSizeMake(300, 300) tweetView.center.x = self.view.center.x tweetView.center.y = 250 tweetView.backgroundColor = UIColor.whiteColor() tweetView.layer.shadowOpacity = 0.3 tweetView.layer.cornerRadius = 3 return tweetView } func makeTextField() -> UITextField { let textField = UITextField() textField.frame = CGRectMake(10, 40, 280, 40) textField.font = UIFont(name: "HiraKakuProN-W6", size: 15) textField.borderStyle = UITextBorderStyle.RoundedRect textField.layer.borderColor = UIColor(red: 0.85, green: 0.85, blue: 0.85, alpha: 1.0).CGColor textField.layer.borderWidth = 1 return textField } func makeTextView() -> UITextView { let textView = UITextView() textView.frame = CGRectMake(10, 120, 280, 110) textView.font = UIFont(name: "HiraKakuProN-W6", size: 15) textView.layer.cornerRadius = 8 textView.layer.borderColor = UIColor(red: 0.85, green: 0.85, blue: 0.85, alpha: 1.0).CGColor textView.layer.borderWidth = 1 return textView } func makeLabel(text: String, y: CGFloat) -> UILabel { let label = UILabel(frame: CGRectMake(10, y, 280, 40)) label.text = text label.font = UIFont(name: "HiraKakuProN-W6", size: 15) return label } func makeCancelBtn(tweetView: UIView) -> UIButton { let cancelBtn = UIButton() cancelBtn.frame.size = CGSizeMake(20, 20) cancelBtn.center.x = tweetView.frame.width-15 cancelBtn.center.y = 15 cancelBtn.setBackgroundImage(UIImage(named: "cancel.png"), forState: .Normal) cancelBtn.backgroundColor = UIColor(red: 0.14, green: 0.3, blue: 0.68, alpha: 1.0) cancelBtn.layer.cornerRadius = cancelBtn.frame.width/2 cancelBtn.addTarget(self, action: "tappedCancelBtn:", forControlEvents:.TouchUpInside) return cancelBtn } func makeSubmitBtn() -> UIButton { let submitBtn = UIButton() submitBtn.frame = CGRectMake(10, 250, 280, 40) submitBtn.setTitle("送信", forState: .Normal) submitBtn.titleLabel?.font = UIFont(name: "HiraKakuProN-W6", size: 15) submitBtn.backgroundColor = UIColor(red: 0.14, green: 0.3, blue: 0.68, alpha: 1.0) submitBtn.setTitleColor(UIColor.grayColor(), forState: UIControlState.Highlighted) submitBtn.layer.cornerRadius = 7 submitBtn.addTarget(self, action: "tappedSubmitBtn:", forControlEvents:.TouchUpInside) return submitBtn }

}

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

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

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

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

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

HAL49

2016/03/30 02:57 編集

こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました、との事ですが今の私のレベルではコレ以上の内容は難しく、また本サイトでは現在質問の削除が出来ない仕様ですので、自己解決という形で取り下げに替えさせて頂きます。 初心者が質問などして、まことに失礼致しました。
guest

回答2

0

ベストアンサー

セルに乗せている4つのUIのtagを設定しているでしょうか?
各UIのAttributes inspectorで設定できますので、それぞれのUIに適切なtagを設定して下さい。

名前(UILabel) = 1
ツイート(UILabel) = 2
時間(UILabel) = 3
画像(UIImageView) = 4

例えばUILabelの場合、下の場所にあります。

UILabelのAttributes inspector

投稿2016/03/30 04:39

fuzzball

総合スコア16731

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

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

0

【こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました】との事ですが今の私のレベルではコレ以上は難しいので自己解決という形で取り下げに替えさせて頂きます。
初心者が質問などして、まことに失礼致しました。

投稿2016/03/30 02:53

編集2016/03/30 02:55
HAL49

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問