Я пытаюсь использовать навигационную часть Three20. Для взаимодействия со сборками Three20 мне пришлось создать Binding Project с классами, которые связываются с классами в Three20. Одним из них является UIViewController
, который имеет дополнения к UIKit UIViewController
. Это означает, что мои ViewControllers должны наследоваться от этого класса, если я собираюсь использовать функции Three20 для навигации на основе URL.
Вот проблема:
Если я унаследую от Three20 UIViewController
и затем попытаюсь отредактировать .xib в Xcode, MonoDevelop не создаст файлы .h и .m, необходимые Xcode для добавления Outlet и т. Д.
Кто-нибудь знает способ иметь контроллер View, который не наследуется напрямую от MonoTouch.UIKit.UIViewcontroller
и доступен для редактирования в Xcode?
вот мой код:
public partial class TestViewController : TTBaseViewController
{
.......
и в отдельном проекте привязки MonoTouch:
[BaseType (typeof (MonoTouch.UIKit.UIViewController))]
interface TTBaseViewController
{
/**
* Displays a controller inside this controller.
*
* TTURLMap uses this to display newly created controllers. The default does nothing --
* UIViewController categories and subclasses should implement to display the controller
* in a manner specific to them.
*/
[Bind("addSubcontroller:animated:transition:")]
void AddSubcontroller(UIViewController controller, bool animated, UIViewAnimationTransition transition);
, который выдает определение класса следующим образом:
[Register("TTBaseViewController", true)]
public partial class TTBaseViewController : MonoTouch.UIKit.UIViewController {
static IntPtr selAddSubcontrollerAnimatedTransition_ = Selector.GetHandle ("addSubcontroller:animated:transition:");
static IntPtr selRemoveFromSupercontroller = Selector.GetHandle ("removeFromSupercontroller");
static IntPtr selRemoveFromSupercontrollerAnimated_ = Selector.GetHandle ("removeFromSupercontrollerAnimated:");
static IntPtr selKeyForSubcontroller_ = Selector.GetHandle ("keyForSubcontroller:");
static IntPtr selSubcontrollerForKey_ = Selector.GetHandle ("subcontrollerForKey:");
static IntPtr selPersistView_ = Selector.GetHandle ("persistView:");
static IntPtr selRestoreView_ = Selector.GetHandle ("restoreView:");
static IntPtr selSuperController = Selector.GetHandle ("superController");
static IntPtr selSetSuperController_ = Selector.GetHandle ("setSuperController:");
static IntPtr selTopSubcontroller = Selector.GetHandle ("topSubcontroller");
static IntPtr selNavigatorURL = Selector.GetHandle ("navigatorURL");
static IntPtr selOriginalNavigatorURL = Selector.GetHandle ("originalNavigatorURL");
static IntPtr selFrozenState = Selector.GetHandle ("frozenState");
static IntPtr selDoNavigatorGarbageCollection = Selector.GetHandle ("doNavigatorGarbageCollection");
static IntPtr class_ptr = Class.GetHandle ("TTBaseViewController");
[Export ("init")]
public TTBaseViewController () : base (NSObjectFlag.Empty)
{
Handle = MonoTouch.ObjCRuntime.Messaging.IntPtr_objc_msgSend (this.Handle, Selector.Init);
}
public TTBaseViewController (NSObjectFlag t) : base (t) {}
public TTBaseViewController (IntPtr handle) : base (handle) {}