2016-11-16 7 views
0

iOSプロジェクトでAndroidに存在する「チップ」コンポーネントを再作成するGitHubプロジェクトを使用しています。私はSwiftにこのObjective-Cコードを書こうとしています:viewWithTag Swiftオプションを使用してビューを作成する

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"TokenView" owner:nil options:nil]; 
UIView *view = nibContents[0]; 
UILabel *label = (UILabel *)[view viewWithTag:2]; 
UIButton *button = (UIButton *)[view viewWithTag:3]; 

[button addTarget:self action:@selector(tokenDeleteButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 

label.text = self.tokens[index]; 
CGSize size = [label sizeThatFits:CGSizeMake(1000, 40)]; 
view.frame = CGRectMake(0, 0, size.width + 97, 40); 
return view; 

これは私がこれまで持っているものです。

let view = Bundle.main.loadNibNamed("TokenView", owner: nil, options: nil)?[0] as? UIView 

    if let imageView = UIImageView().viewWithTag(1) as? UIImageView { 
     imageView.image = UIImage(named: "pic.png") 
    } 

    if let label = UILabel().viewWithTag(2) as? UILabel { 
     label.text = (tokens[Int(index)] as! NSString) as String 
     let size = (label.sizeThatFits(CGSize(width: 1000, height: 40))) 
     view?.frame = CGRect(x: 0, y: 0, width: size.width + 97, height: 40) 
    } 

    if let deleteButton = UIButton().viewWithTag(3) as? UIButton { 
     deleteButton.addTarget(self, action: #selector(tokenDeleteButtonPressed(tokenButton:)), for: .touchUpInside) 
    } 

    return view 

私がいる問題はUILabel、UIButtonとUIImageViewはすべてゼロであると、私は理由を把握するように見えることができないということです。 私はそれをデバッグし、それぞれの説明を印刷しようと私が得るすべては、私は、読書optionals上のビデオを見て、私はシンプルなためにそれを使用する方法を理解してきたUIImageView(範囲外)

で見ます場合は、これはもう少し複雑なようです。

答えて

1

ラベルButtonおよびimageviewを作成しています。コードは以下のようになります。私はそのラベル、ボタンと画像ビューがトークンビューのサブビューであると仮定しています

let view = Bundle.main.loadNibNamed("TokenView", owner: nil, options: nil)?[0] as? UIView 

if let imageView = view?.viewWithTag(1) as? UIImageView { 
     imageView.image = UIImage(named: "pic.png") 
    } 

    if let label =view?.viewWithTag(2) as? UILabel { 
     label.text = (tokens[Int(index)] as! NSString) as String 
     let size = (label.sizeThatFits(CGSize(width: 1000, height: 40))) 
     view?.frame = CGRect(x: 0, y: 0, width: size.width + 97, height: 40) 
    } 

    if let deleteButton = view?.viewWithTag(3) as? UIButton { 
     deleteButton.addTarget(self, action: #selector(tokenDeleteButtonPressed(tokenButton:)), for: .touchUpInside) 
    } 
+0

それです。ところで、Xcodeはあなたのコードにエラーを表示しています。 imageview、label、およびbuttonを作成するときに、 'let let label = view?.viewWithTag(2)as? UILabel'その後、意図どおりに動作します。ありがとう。 – Alex

+0

申し訳ありません私はそれを更新することを忘れていました。 – Vinodh

関連する問題