2012-08-29 51 views
-1

不工作我使用這些代碼自定義後退按鈕定製後退按鈕在Xcode

UIImage *buttonImage = [UIImage imageNamed:@"back-button-2.png"]; 

    //create the button and assign the image 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:buttonImage forState:UIControlStateNormal]; 

    //set the frame of the button to the size of the image (see note below) 
    button.frame = CGRectMake(0, 0, buttonImage.size.width, buttonImage.size.height); 

    [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; 

    //create a UIBarButtonItem with the button as a custom view 
    UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
    self.navigationItem.leftBarButtonItem = customBarItem; 

這裏是回功能

-(void)back { 
    // Tell the controller to go back 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

自定義後退按鈕快到了,但它不工作。

+0

會發生什麼事,當你點擊按鈕?它是否像普通的酒吧按鈕一樣暗淡?或者它沒有反應? –

+0

它顯示正常Tab鍵,但不重定向。 – Shyantanu

+0

你嘗試使用' - (void)返回:(id)sender'並添加動作爲'@selector(back:)' –

回答

0

嘗試添加目標到customBarItem,而不是button自定義視圖

+0

沒有得到你的點夥伴 – Shyantanu

+0

@Shyantanu使用'customBarItem.target =自我; customBarItem.action = @selector(back);'代替'[button addTarget ...' –

+0

編輯此,但沒有improuvement .. :( – Shyantanu

1
self.navigationItem.leftBarButtonItem = [self getBackBtn]; 



- (UIBarButtonItem *) getBackBtn 
{ 
    UIButton * backBtn=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [backBtn setFrame:CGRectMake(0.0f,0.0f,73.0f,33.0f)]; 
    [backBtn setImage:[UIImage imageNamed:[NSString stringWithFormat:@"back.png"]] forState:UIControlStateNormal]; 
    [backBtn addTarget:self action:@selector(backBtnPressed) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn]; 
    return backBarButton;  
} 

//Action For LeftBarButton - BackButton 
- (void)backBtnPressed 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
0

你可以用不同的方式自定義的UIBarButtonItem,並保持它是箭形

說你的第一個控制器爲A,你推入B,在控制器的viewWillAppear中:你可以做

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"whatever.png"] style:UIBarButtonItemStyleBordered target:nil action:nil]; 

這將使B的後退按鈕一個諾瑪L背面按鈕,但有你選擇

圖像如果你想自定義文本,而不是,你可以做

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"title" style:UIBarButtonItemStyleBordered target:nil action:nil]; 
0

因爲UIBarButtonBarItem做事件處理本身它永遠不會在事件將其傳遞給UIView ,您的自定義後退按鈕在哪裏。在這一行中,您已將其僅添加爲子視圖

UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

它顯示卻它就再也不會從UIBarButtonItem事件的任何反饋,這是一個觀點而已,家長UIBarButtonItem將不會通過任何事件來處理一個簡單的UIView。這不會是合乎邏輯的行爲,因此這完全沒問題。


必須添加選擇的UIBarButtonItem

[customBarItem setAction:@selector(back)]; 

不適合你UIButton對象。


...或者你可以添加你的後退按鈕像

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(back)]]; 

可以使用UIBarButtonItem類的任何其他init方法來定製它,你會發現他們在UIBarButtonItem Class Reference

-2

試一下: http://www.raywenderlich.com/4344/user-interface-customization-in-ios-5

這就是我用什麼....基本上你將這個方法添加到應用程序委託:

- (void)customizeAppearance 
{ 

    UIImage *buttonBack30 = [[UIImage imageNamed:@"button_back_textured_30"] 
     resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 5)]; 
    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:buttonBack30 
     forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
} 
+0

不回答問題。查看方法名稱,然後回顧問題。 –