我给自己设定了一个简单的挑战,我在许多应用程序中都看到了它,但我遇到了很多困难。
我的任务是拥有一个带有导航栏、按钮和标签的 ViewController。当您按下按钮时,会弹出一个带有新 ViewController 的 UIPopover,并且用户按下该弹出框内的按钮。当他们按下那个按钮时,我的 ViewController 可以使用该信息来做一些事情。就是这样。简单的?
因此,我的父 ViewController 设置为:
UIViewController popOverViewController = new PopOverViewController ();
PopoverDelegate _popoverDelegate;
public override void ViewDidLoad () {
base.ViewDidLoad ();
BarButtonItemPopover = new UIPopoverController (popOverViewController);
BarButtonItemPopover.PopoverContentSize = new SizeF (320, 320);
_popoverDelegate = new PopoverDelegate();
BarButtonItemPopover.Delegate = _popoverDelegate;
}
public class PopoverDelegate : UIPopoverControllerDelegate {
public PopoverDelegate() { }
public override void DidDismiss (UIPopoverController controller) {
string mike = "Dismissed";
}
public void updateSomething(string someData) {
// When the user clicks in my popOverViewController I want to come
// here and do something. I will then dismiss the popover here.
string mike = someData;
}
}
我的 popOverViewController 设置为 UIViewController,上面有一个名为 btnClickMe 的按钮,关键是:
public override void ViewDidLoad () {
base.ViewDidLoad ();
this.btnClickMe.TouchUpInside += (s, e) => {
Console.WriteLine("");
// When I'm clicked I want to send some
// data to the updateSomething("hello world") method
// in the ViewController that crated me! Help!
};
}
我已经调试过了,当我在模拟器中关闭 Popover 时,Delegate 会触发并且我调用 ViewController 中的字符串 mike 确实等于“Dismissed”。
我根本无法理解或发现的是如何从 popoverViewController 调用/引用/触发 updateSomething() 方法。我看过许多使用 UIPopover 的人的例子,但似乎没有人在 Monotouch 中有这样做的例子,所有这些都在 Objective C 中。这是否意味着不可能?还是只针对非常有经验的人?
老实说,我认为 Monotouch 比 Objective C 更容易,因为我是一名经验丰富的 C# 开发人员,但目前我认为学习 Objective C 会更容易!
我希望有人可以帮助我,因为我感到非常困惑/沮丧。
谢谢
麦克风