0

私は iOS SDK にまったく慣れていませんが、UITableViewController を別の VC のデリゲートとして使用しようとしています。問題はより大きなアプリケーションの一部ですが、2番目のVCで「完了」が押されるとUITableViewControllerが2番目のVCを却下するように、以下に簡略化しました。

MainViewController.h (UITableViewController)

    #import <UIKit/UIKit.h>
    #import "SecondViewController.h"

    @interface MainViewController : UITableViewController <SecondViewControllerDelegate>
    @end

MainViewController.m

- (void)doneEditing {
    [self dismissViewControllerAnimated:YES completion:nil];
}

SecondViewController.h

#import <UIKit/UIKit.h>

@class SecondViewController;
@protocol SecondViewControllerDelegate <NSObject>
- (void)doneEditing;
@end

@interface SecondViewController : UIViewController

@property (weak, nonatomic) id <SecondViewControllerDelegate> delegate;
- (IBAction)done:(id)sender;
@end 

SecondViewController.m

- (IBAction)done:(id)sender {
    [self.delegate doneEditing];
}

Main が UITableViewController でない場合に機能します。タッチすると「完了」が認識されることに気付きましたが、「doneEditing」メソッドは呼び出されません。

4

1 に答える 1

0

If you are using storyboards, you should use an unwind segue. It is an easy way to dismiss a modal UIViewController without delegation. Here is a good tutorial on unwind segues

于 2013-08-27T04:40:41.000 に答える