Xamarin.ios 使用带MonoTouch的Three20 TTPhotoViewController

Xamarin.ios 使用带MonoTouch的Three20 TTPhotoViewController,xamarin.ios,three20,ttphotoviewcontroller,Xamarin.ios,Three20,Ttphotoviewcontroller,我正在尝试使用带有MonoTouch的Three20 TTPhotoViewController。我从TTPhoto派生了FacebookPhoto,从TTPhotoSource派生了FacebookPhotoSource,现在尝试调用TTPhotoViewController,但在推送视图控制器时出现以下异常: List<Photo> photoList = FacebookGraphApi.Instance.GetAlbumPhotos(album.id); List<Fa

我正在尝试使用带有MonoTouch的Three20 TTPhotoViewController。我从TTPhoto派生了FacebookPhoto,从TTPhotoSource派生了FacebookPhotoSource,现在尝试调用TTPhotoViewController,但在推送视图控制器时出现以下异常:

List<Photo> photoList = FacebookGraphApi.Instance.GetAlbumPhotos(album.id);
List<FacebookPhoto> fbPhotoList = photoList.Select(x => new FacebookPhoto(x)).ToList();
var photos = new TTPhotoViewController();
photos.PhotoSource = new FacebookPhotoSource(fbPhotoList);
NavController.PushViewController(photos, true);
抛出Objective-C异常。名称:NSInvalidArgumentException原因::-[NSPlaceholderString initWithFormat:locale:arguments:::]:nil参数

我注意到这个github项目中的monotouch绑定:缺少photoAtIndex绑定,所以我添加了这个绑定并重新编译了它们,但我还没有弄清楚为什么会出现这种异常

下面是我调用TTPhotoViewController的方式:

List<Photo> photoList = FacebookGraphApi.Instance.GetAlbumPhotos(album.id);
List<FacebookPhoto> fbPhotoList = photoList.Select(x => new FacebookPhoto(x)).ToList();
var photos = new TTPhotoViewController();
photos.PhotoSource = new FacebookPhotoSource(fbPhotoList);
NavController.PushViewController(photos, true);

只要我的两分钱:离三点二十远点。它已经过时,文档很糟糕,而且比它节省的工作量更让你头疼。我觉得这不值得。(我过去曾使用过它)感谢你的建议,在与它斗争了超过我想承认的时间之后,我得出了相同的结论。我处理了一个嵌入three20的遗留项目,我发现从头开始,在再次开发时选择要重用的代码要简单得多。如果可以的话,把它扔掉。如果这是一个巨大的项目,从零开始不是一个选项。。。你要做你该做的。。。
    class FacebookPhoto : TTPhoto
    {
        Photo _photo;
        public FacebookPhoto(Photo photo)
        {
            _photo = photo;
        }

        public override string Caption {
            get {
                if(_photo.name == null)
                    return "";
                return _photo.name;
            }
            set {
                throw new NotImplementedException();
            }
        }

        public override TTPhotoSource PhotoSource { get; set; }

        public override int Index { get; set; }

        public override SizeF Size {
            get {
                return new SizeF(_photo.width, _photo.height);
            }
            set {
                throw new NotImplementedException();
            }
        }

        public override string URLForVersion (int version)
        {
            switch (version) {
            case 4:
                return _photo.picture;
            default:
                return _photo.source;
            }
        }
    }