Xamarin.ios 使用带MonoTouch的Three20 TTPhotoViewController
我正在尝试使用带有MonoTouch的Three20 TTPhotoViewController。我从TTPhoto派生了FacebookPhoto,从TTPhotoSource派生了FacebookPhotoSource,现在尝试调用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
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;
}
}
}