使用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,不说废话,咱先上代码。

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


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


上述图片是自定义的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参数)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,296评论 4 61
  • 欧伦特漂移车以动态平衡为主要原理,设备内置了精密的陀螺仪,能够根据驾驶着的姿态来判断行车的方向和速度,通过精密并...
    古老的封印阅读 140评论 0 0
  • 女生是不是都“觉得自己去年买的衣服特丑 觉得自己衣柜里总少了一件衣服 觉得自己去年就是裸奔过来的” ​​​
    ParisHe倩倩阅读 240评论 0 0
  • 躁动的心在工作后的一年中似乎被按住了。暑假,出去一个月,遇到了此生可能只会遇到一次的一类人。不知是福是祸,...
    胡楚楚阅读 173评论 0 1
  • 管理自己: 第一律:做自己的CEO 领导力大师沃伦.本尼斯认为:修炼自己有两个方面,第一是积极的自我认识,包括,1...
    郭云若阅读 635评论 1 1