使用Xamarin.iOS编写苹果原生tableView

        Xamarin始创于2011年,是商业项目.mono做为跨平台的框架,它旨在使移动开发变得难以置信地迅捷和简单。Xamarin的产品针对多种平台的应用开发,包括iOS、Android、Windows Phone和Mac App。使用Xamarin可以很便捷的使用一份逻辑代码同时开发在安卓和iOS中的应用。

      当然,这是官方和百科对其的介绍,就笔者了解而言,确实Xamarin理论上可以达到上述效果,但笔者就这段时间对其接触后的感受,觉得Xamarin对iOS的支持其实并不是它所描述的那么好。说到底,Xamarin为何能够开发iOS原生app无非是Xamarin 团队用 C# 语言重写了 iOS 和 Android 原生 API,所以开发者可以通过C#语言来调用重写的api来实现同样的效果。

     这段时间,笔者在踏坑的时候,发现网上没有多少对Xamarin .iOS的实例介绍,相关书籍中也没有对tableView,collectionView的实现详述,所以决定自己书写一篇自己做的demo展示。

    该demo是使用Xamarin.iOS来写一个苹果简单的tableView,不说废话,咱先上代码。

使用Xamarin.iOS编写苹果原生tableView_第1张图片

以上是重写的viewDidLoad方法以及初始化tableView和其相关设置(由于笔者直接使用的tableViewController,故不必去手动遵守相关代理数据源协议等)


使用Xamarin.iOS编写苹果原生tableView_第2张图片

以上图片是实现tableView的数据源方法。


使用Xamarin.iOS编写苹果原生tableView_第3张图片

上述图片是自定义的cell设置,button是随意后续添加上去的(单纯是想尝试一下C#如何添加button的selector事件)

为什么说Xamarin对苹果支持不高呢?主要在写这个demo的时候,笔者总结了几个坑点:

1.oc和c#中获取类型并非使用类对象的创建而是通过泛类型Type和其方法getType来获取,如果需要实例化,结合Activator的方法来实例化,且需要注意获取的类型需要加命名空间前缀!

2.表视图的cell注册无法通过以前oc的class需要结合Type的获取。

3.自定义cell的返回和系统类的返回写法有很大的区别(并不只是oc里的区别)。

4.使用UIImage对象通过文件获取的方式,得到的图片通过视图窗体显示出来是默认图片原始大小,需要结合UIEdgeInset来调整,如果有ImageView做载体则可以通过frame来便携调试。

5.自定义cell时返回经常报被管理对象无法实例化的错误,网上暂无相关资料,但不断调试后发现其错误大致是因为指定初始化方法书写错误(务必注意需要携带一个IntPtr参数)

你可能感兴趣的:(使用Xamarin.iOS编写苹果原生tableView)