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,它永远不会被调用。
答案 0 :(得分:1)
您可以随意添加。
你的问题是:
target:nil
你基本上是在呼叫[nil backPressed:]
这是一个NOOP。
尝试将nil
更改为self
或composeViewController
,或按下按钮时要通知的任何对象。
答案 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];
}