2017年7月29日 星期六

for xamarin ios ,用Nib.Instantiate(null, null)[0]時,出現「 System.InvalidCastException: Specified cast is not valid. 」錯誤訊息

如果只是設計一般iphone用的custorm UIView,你應該不會用到xcode去改view的大小,了不起用ipad的view去做scrollview的subview
可是如果用ipad要去做更大,超過landscape寬度的view,那你不只是在 simulated matrix的size設定為「freeform 」之外,你還要去xcode改他的寬度才可以(當然日後這個view也是要放在scrollview中才能捲動的)
有時我們會用temp.xib去xcode做這些上述動作,再回來把temp.xib的內容copy past到我們正式要用的xib檔中,可是在用xib檔產用view時,卻出現了「 System.InvalidCastException」訊息
=====在那個UIView .cs中.....=======================
....
....
...
 [Register("UIMyViewClass ")]
    public class UIMyViewClass : UIView {
     ....
    .....
    public static UIMyViewClass CreateMyView() {
            return (UIMyViewClass )Nib.Instantiate(null, null)[0];
     }
}
=======================================
在上述發生「 System.InvalidCastException: Specified cast is not valid. 」錯誤訊息
真害,明明以前都很正常的啊...
嗯,問題就出在xib檔中,
========================================
...
....
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="UIMyViewClass "/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view contentMode="scaleToFill" id="1" customClass="UIMyViewClass ">
...
....
========================================
就是要對一下「customClass」有沒有錯,這是這麼簡單罷了