0

よろしくお願いします。

私のプロジェクトのメイン ViewController.m では、次のようにカスタマイズされた tableView を追加しています。

messageController = [[MyMessagesController alloc] initWithStyle:UITableViewStylePlain];
[self addChildViewController:messageController];
[self.view addSubview:messageController.view];

次に、MyMessagesController.m セクション tableView didSelectRowAtIndexPath: で、それが作成され、childViewController として追加された ViewController.m で有効になるコードを書きたいと思います。

MyMessagesController.m から ViewController.m の関数にアクセスするにはどうすればよいですか?

[delegate functionName]; を呼び出せるように、どうにかしてデリゲートにすることはできますか? ViewController.m に情報を返すことはできますか? NSString や NSArray などを介して送信することにより、テーブル内のどの行が選択されましたか?

4

2 に答える 2

1

はい、デリゲートを使用します。これを達成する最善の方法がわからない場合は、デリゲート プログラミングに関する Apple の参考資料をご覧ください。

于 2013-01-29T18:53:28.730 に答える
0

理解したところで、1 つの viewController を別の viewController のデリゲートに変換する方法を次に示します。

親コントローラーの .h で -

@interface ViewController : UIViewController <NameOfDelegate> {

親コントローラーの .m で、新しいビューを作成したら、

newViewController.delegate = self;

また:

- (void)functionToCall:(id)sender {
    NSLog(@"Function Called!!!");
}

追加している newViewController の .h に -

@protocol NameOfDelegate;

@interface newViewController : UIViewController/OR/TableViewController {
    id <NameOfDelegate> delegate;
}

@property (nonatomic, strong) id <NameOfDelegate> delegate;

@end

@protocol NameOfDelegate
- (void)functionToCall:(id)sender;
@end

newViewController の .m で -

@implementation newViewController

@synthesize delegate;

デリゲートで関数を呼び出す準備ができたら -

[delegate functionToCall:self];
于 2013-01-29T19:30:13.013 に答える