如何在导航控制器模式对话框视图中触发按钮

时间:2014-02-04 05:12:27

标签: ios objective-c

First View有一个撰写按钮,可以将composeview作为模态对话框调用。我在第二个视图中添加了一个取消按钮。我在哪里添加取消按钮的操作?

ComposeTweetVC* composeViewController = [[ComposeTweetVC alloc] initWithNibName:@"ComposeTweetVC" bundle:[NSBundle mainBundle]];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:composeViewController];

UIBarButtonItem *newBackButton =
[[UIBarButtonItem alloc] initWithTitle:@"Cancel"
                                 style:UIBarButtonItemStyleBordered
                                target:nil
                                action:@selector(backPressed:)];

composeViewController.navigationItem.leftBarButtonItem = newBackButton;

[self presentViewController:nvc animated:YES completion:nil];

我在哪里添加backPressed方法?如果我添加到调用composeviewcontroller的viewcontroller,它永远不会被调用。

3 个答案:

答案 0 :(得分:1)

您可以随意添加。

你的问题是:

target:nil

你基本上是在呼叫[nil backPressed:]这是一个NOOP。

尝试将nil更改为selfcomposeViewController,或按下按钮时要通知的任何对象。

答案 1 :(得分:0)

您将目标设置为nil,因此永远不会调用backPressed:

尝试更改此行

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"
                             style:UIBarButtonItemStyleBordered
                            target:nil
                            action:@selector(backPressed:)];

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"
                             style:UIBarButtonItemStyleBordered
                            target: composeViewController
                            action:@selector(backPressed:)];

答案 2 :(得分:0)

设定目标

initWithTitle:style:target:action:

使用指定的标题和其他属性初始化新项目。

- (id)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action

<强>参数

<强>标题

该项目的标题。如果没有显示标题。

<强>式

项目的风格。 UIBarButtonItemStyle中定义的常量之一。

<强>靶

接收操作讯息的对象。

<强>动作

选择此项目时发送到目标的操作。

然后使用

-(void) backPressed:(id)sender{

  [self dismissViewControllerAnimated:YES completion:nil];
}