2014-03-27 53 views
0

我有很多代碼的地方在UINavigationBar中更改視圖。
因此,代碼是這樣的:包含「按鈕addTarget」的重構代碼

UIButton *butt2=[UIButton buttonWithType:UIButtonTypeCustom ]; 

[butt2 setFrame:CGRectMake(285, 7, 30, 25)]; 
[butt2 setTag:2]; 
[butt2 setImage:[UIImage imageNamed:@"tag_icon.png"] forState:UIControlStateNormal]; 
[butt2 addTarget:self action:@selector(revealMenu:) forControlEvents:UIControlEventTouchDown]; 
[self.navigationController.navigationBar addSubview:butt2] ; 

我想創建得到的不同的東西論點這是代碼的方法:
1.圖像(容易)
2.按鈕的動作 - AHA!這一個我無法弄清楚如何做

回答

0

如果你決定實現它的功能也可能是像

void addNavigationButton(UIViewController *vc, UIImage *image, SEL action) 
{ 
    UIButton *butt2=[UIButton buttonWithType:UIButtonTypeCustom ]; 

    [butt2 setFrame:CGRectMake(285, 7, 30, 25)]; 
    [butt2 setTag:2]; 
    [butt2 setImage:image forState:UIControlStateNormal]; 
    [butt2 addTarget:vc action:action forControlEvents:UIControlEventTouchDown]; 
    [vc.navigationController.navigationBar addSubview:butt2] ; 
} 

應該在您的視圖控制器被稱爲

addNavigationButton(self, [UIImage imageNamed:@"tag_icon.png"], @selector(revealMenu:)); 

另一個好主意 - 實現這個功能作爲一個UIViewController的類別方法。

0

添加目標原型爲:

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents; 

如果使用同一類型「選擇」你應該通過@selector(yourMethod)到你的方法。

+0

以及該事件呢?我如何通過它作爲一個argumet? – Boaz

+0

事件是一個UIControlEvents類型,它基本上是一個typedef NS_OPTIONS,應該沒有問題。但老實說,我並沒有真正看到你通過重構這種方法試圖做什麼。 – foOg