2014-11-20 3 views
0

이므로 여기에 거래가 있습니다. 나는 5 탭, 그들 중 3 링크가 있습니다. 따라서 사용자가 클릭하면 실제로 다음 웹 사이트로 연결됩니다.비어있는 탭 표시 줄 항목은

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{...} 

따라서 탭 모음 항목은 버튼처럼 작동합니다.

링크가 잘 작동하지만 문제는 클릭 한 번으로로드 된보기를 원하지 않는다는 것입니다. 그래서 처음에는 (탭 바 컨트롤러에서) self.viewController에 대해 [UIViewController alloc]을 추가했습니다. 그 뷰 컨트롤러는 비어 있습니다하지만 그들은 나를 이렇게 같은 아이콘을 추가 할 수 있습니다 :

UIViewController *vc = [UIViewController alloc]; 
[vc1.tabBarItem setImage:[[UIImage imageNamed:@"tab-fb"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]]; 
[email protected]"Facebook"; 

이 모든 잘 작동하지만 사용자가 클릭 할 때, 검은 색 빈보기가있다. 나는 이것이 정상적이라고 생각하지만, 어떻게 없앨 수 있습니까? 사용자가 현재보기에서 머물 수 있지만 링크로 연결되기를 원합니다.

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{ 
    selectedIndex=[[tabBar items] indexOfObject:item]; 

    if(selectedIndex == 1){ 
     [self setSelectedIndex:0]; //RIGHT HERE 
     //...code to go to link... 
} 
} 

하지만 어떤 이유로

이 프로그램은 [self setSelectedIndex:0];

모든 팁이 응답하지 않습니다

이 같은 일을 시도?

답변

0

내 탭 바에서이 기능이 작동하지 않습니다.

그러나이 방법이 유용 할 수 있습니다. 앱 위임 didFinishLaunchingWithOptions에서 :

MyTabBarController.delegate = self; 

그런 다음 앱 위임이 위임 메서드를 구현 :

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

을 방법에있어서이 같은 VC를 확인할 수 있습니다

if ([tabBarController.viewControllers indexOfObject:viewController] == indexOfTabToBlock) return false; 

이를 이 탭으로의 스위치를 효과적으로 차단합니다.

사용자가 원하는대로 링크를 처리 할 수 ​​있도록 사용자를 유지하려는 기본보기 컨트롤러에이 탭을 전달하는 방법을 찾아야합니다. 예를 들어 알림을 사용할 수 있습니다.

+0

이 사실에 대한 알림이 필요하지 않습니다. shouldSelectViewController : 메서드 내부에서 탭 표시 줄 컨트롤러의 selectedViewController 속성을 사용하여 현재 표시된보기 컨트롤러에 대한 포인터를 가져올 수 있습니다. – rdelmar

+0

좋은 지적, 고마워. –

+0

감사합니다! 이것은 내가 필요로하는 것처럼 잘 작동했다. – NickProvost