UITableViewController不能作为另一个VC的委托吗?

时间:2013-08-27 01:55:20

标签: iphone ios objective-c cocoa-touch

我对iOS SDK很陌生,但我一直在尝试使用UITableViewController作为另一个VC的委托。问题是一个更大的应用程序的一部分,但我在下面简化了它,我尝试让UITableViewController在第二个VC上按下“Done”后关闭第二个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”方法。

1 个答案:

答案 0 :(得分:0)

如果您使用的是故事板,则应使用展开segue。这是一种在没有委托的情况下解雇模态UIViewController的简单方法。 Here is a good tutorial on unwind segues