2016-08-02 9 views
-1

サブビューを追加するときにこのエラーが発生しました。あなたは、エラーが現れるコードを見ることができます。私は プログラミングに比較的新しいので、私は助けが必要です。私はスウィフトでストーリーボードを使わずに書いています。 backgroundColor = UIColor.blueColorを()タイプ '(MapViewController).Type'(別名 'MapViewController.Type')の値を予想される引数タイプ 'UIView'に変換できません

編集:私は、エラーを引き起こしているかを知ることを言及するのを忘れてきた私が書いたところ

は無視します。 MapViewControllerはUIViewControllerであり、UIViewに配置しています。しかし、私は解決方法を知らない。私が欲しいもの

はここmapview

個々のセルへ
import UIKit 
import MapKit 

class MapCell1: MapCell, MKMapViewDelegate { 



override func setupViews() { 

    backgroundColor = UIColor.blueColor() 

    addSubview(MapViewController) //Cannot convert value of type '(MapViewController).Type' (aka 'MapViewController.Type') to expected argument type 'UIView' 

} 



} 

import UIKit 

import MapKit 

class MapViewController: UIViewController { 

var window: UIWindow? 
var mapView: MKMapView? 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
    self.view.backgroundColor = UIColor.whiteColor() 

    self.mapView = MKMapView(frame: CGRectMake(0, 20, (self.window?.frame.width)!, 300)) 
    self.view.addSubview(self.mapView!) 


} 

} 

を追加することですMapCellためのコードです:

追加しようとしているているため
import UIKit 


class MapCell: BaseCell, UICollectionViewDelegate { 

    let collectionView: UICollectionView = { 
    let layout = UICollectionViewFlowLayout() 
    let cv = UICollectionView(frame: CGRectZero, collectionViewLayout: layout) 
    cv.backgroundColor = UIColor.redColor() 
    return cv 
}() 


     let cellId = "cellId" 

override func setupViews() { 
    super.setupViews() 

    addSubview(collectionView) 
    addconstraintsWithFormat("H:|[v0]|", views: collectionView) 
    addconstraintsWithFormat("V:|[v0]|", views: collectionView) 



} 


} 


And BaseCell: 

mport UIKit 

class BaseCell: UICollectionViewCell { 
    override init(frame: CGRect) { 
    super.init(frame: frame) 
    setupViews() 
} 

func setupViews() { 

} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 

} 

class BaseCell: UICollectionViewCell { 


    func setupViews() { 


    } 




} 

} 

Here is the new error

+0

を使用したくない理由として興味MapViewControllerは、ビューコントローラ..ですあなたはそれをビューに追加しようとしています...それがあなたがしようとしているものかどうかわかりません。 – penatheboss

+0

ええ、それは私がやろうとしていることです。 – Stc

+0

ビューコントローラをビューに追加することはできません。ビューまたはビューへのビューをビューコントローラに追加することができます – penatheboss

答えて

0

サブビューとしてのMapViewControllerTypeは、の実際のインスタンスのビューではありません10。

それはおそらく唯一のあなたのビットを助けるが、あなたは

let mapViewController = MapViewController() 
self.view.addSubview(mapViewController.view) 

をした場合は、凝った何かをしたいと思いまで、あなたは、おそらくのために大丈夫と思います。言われていること

、あなたがオブジェクト指向プログラミングを通過することがあります:クラス何、例えば何、...

+0

これはヒントのおかげです。しかし、私はどこでそれらのコードを実装するのか100%確信していません。 – Stc

+0

コンパイルされない行の代わりに。ちなみに、viewDidLoadメソッドの実装で、ビューをサブビューとして追加する方法の実際の例が分かりました。 – aimak

0

EDIT:まず

は、あなたのクラスMapViewControllerに名前を付けないでください。これは既にビューコントローラのタイプなので、自分の名前を付ける必要があります(私はイニシャルを使ってJLMapViewと呼んでいます)。セルにMapViewsを追加しようとしているため、フォームUIViewControllerも継承しないでください。代わりに、あなたのJLMapViewUIViewから継承してください。

このように、あなたのクラス宣言は次のようになります。

class JLMapView: UIView { 
//etc.. 

MapCell1のためにこれを試してみてください:

class MapCell1: MapCell, MKMapViewDelegate { 
    var mapView = JLMapView() 
    override func setupViews() { 

    backgroundColor = UIColor.blueColor() 

    addSubview(mapView) 
} 

この方法で、あなたはJLMapViewのインスタンスを追加しています。元々は、addSubviewsにクラスタイプがありましたが、Swiftはオブジェクトのタイプを追加できないため、オブジェクトの特定のインスタンスが必要です。車のディーラーに行くのが好きで、SUVやセダン、またはこの車やその車を求めるのではなく、アイデアとして「車」を求めます。あなたはまだ混乱している場合は、真剣にdata modeling

幸運具体的には、オブジェクト指向プログラミングの概念の見直しを検討し、それはまだ動作しない場合は、

のEND EDIT

が、私は」場合はその理由を教えて問題を正しく読んでいると、View Controller型をサブビューとして追加しようとしていますが、そうすることはできません。ビューのインスタンスを送信する必要があります。オブジェクトのタイプは送信しないでください。あなたが理解していない場合、それは別の問題であり、what an object is vs what an object type isのようなOOPの概念が必要です。残念ながら、私はあなたがしようとしていることを伝えることができないので、私は完全なソリューションを提供することはできません。

MapCellは何ですか?彼らはUITableViewCell sとされていますか?個々の細胞にMapViewsを追加しようとしていますか?

手の込んだ、と私はあなたをさらに

+0

私はそれが役に立ちそうなら質問を編集します。 – Stc

+0

はい、個別のセルにMapViewを追加しようとしています。それはUICollectionViewCellです – Stc

-1

MapViewControllerは、コントローラのタイプであるのに役立ちますしてください。 "MapViewController"と入力すると、 "Int"と似ています。あなたは特定のバージョンではなく、そのタイプを参照しています。私は

let a = 3 + Int 

あなたはINTは3に追加するかを知りたくないと述べた場合

は想像しますか?この類推のための十分同様に、あなたは、コントローラのビューも

のインスタンスを追加したい、私はあなたがストーリーボード

+0

はい、私はそれがうまくいかない理由を知っています。私はそれに言及するのを忘れていた。私はYouTubeでチュートリアルを見たストーリーボードを使用していない、何故その理由を忘れてしまった。しかし、私はちょうど別のものを試していると私は少しもストーリーボードを使用して... – Stc

+0

私は参照してください。まあ、aimakが言ったように、この場合、コントローラのインスタンスを作成して、そのビューをサブビューとして追加したいと思っています –

+0

さて、私はちょっと調べましたが、これらのコードを書く場所がわかりませんaimakが書いた。 – Stc

関連する問題