0

ReadingMaintViewという名前のテーブルビューコントローラーがあります。各行にはラベルとデータ収集コントロールがあり、たとえば Reading Date にはテキストフィールドがあります。ユーザーが親指を使用して日付ピッカーをスクロールして、Reading Date のテキストフィールドに配置する日付を選択できるようにするために、別の ViewController という別の ViewController を持っています。このビューにあるのは日付ピッカーだけです。ユーザーがaccessorydetailsボタンに触れると、AccessoryViewControllerを起動するセグエがあります。これは、ユーザーが希望する日付を選択できるようにするためです。

ここで、任意の Viewcontroller が、必要な日付に AccessoriesViewController を呼び出せるようにしたいと考えています。これは、セグエバックできるように、AccessoryViewController が呼び出し元の ViewController の名前を知る必要があることを意味します。これどうやってするの ?ReadingMaintView でセグエの準備を設定しました。アクセサリボタンに触れるとトリガーされます。しかし、コールバックを実行するために呼び出された (この場合は ReadingMaintView) の名前を取得するには、AccessoryViewController で何をしなければなりませんか?

4

2 に答える 2

0

あなたの質問を理解できたら、ここにいくつかの提案があります。ReadingMainViewをコンストラクターのパラメーターとして渡すか、AccessoryViewController

public class AccessoryViewController : UIViewController {
    public AccessoryViewController(UIViewController parent) {}
}

(編集:@LarryOBrianはもちろん正しいです。これはすでにParenViewControllerプロパティによって処理されているため、あまり良い提案ではありません...)

または、AcessoryViewControllerそれを起動するコントローラーがイベントハンドラーを登録できるイベントを発行させます

// Somewhere in ReadingMaintView
var accessoryViewController = new AccessoryViewController();
accessoryViewController.ActionCompleted += (eventArgs) => {}
于 2013-03-30T21:33:59.763 に答える
0

EveryUIViewControllerには type のParentViewControllerプロパティがありますUIViewController。または、階層のかなり下にいる場合はUIWindow、を取得してRootViewController下に進むことができます。ChildViewControllers

また、私はあなたのユースケースを誤解しているかもしれませんが、単にUIViewController.PerformSegue(String identifier).

于 2013-03-31T04:01:55.127 に答える