ViewController에서 현재 선택한 탭의 선택된 index 가져 오기
-
06-07-2019 - |
문제
현재 Tabbar 및 여러 ViewControllers가있는 iPhone 응용 프로그램이 있습니다. 모든 뷰는 인터페이스 빌더로 설계되었습니다. ViewController에서 현재 선택한 Tabbar 인덱스를 얻을 수 있지만 어떤 이유로이 속성은 (NULL)을 반환합니다.
내 ViewController의 ViewDidload 함수에서 다음을 불렀습니다.
self.tabBarController.selectedIndex
이것을하는 올바른 방법은 무엇입니까?
AppDelegate 클래스의 코드로 업데이트되었습니다.
MyAppDelegate.h
#import <UIKit/UIKit.h>
@interface MyAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> {
UIWindow *window;
UITabBarController *tabBarController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
myAppDelegate.m :
#import "MyAppDelegate.h"
@implementation MyAppDelegate
@synthesize window, tabBarController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:tabBarController.view];
}
- (void)dealloc {
[tabBarController release];
[window release];
[super dealloc];
}
@end
해결책
AppDelegate 클래스에서 Tabbar에 대한 포인터가 있어야합니다. 당신의 견해에는 탭 바가 없으므로 [self.tabbarcontroller selectedIndex]에서 nil을받습니다.
다른 팁
나는 그것을 가지고 있다고 생각한다. 다음을 사용하여 올바른 색인을 반환합니다.
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
NSLog(@"%d", appDelegate.tabBarController.selectedIndex);
응용 프로그램이 충돌 한 이유는 NSLOG 부품에서 %d 대신 %@을 사용했기 때문입니다. 나는 전에 %d를 시도했던 맹세, 이상하다 ...
인덱스는 이제 반환되었지만 한 번만 반환됩니다. 탭 섹션을 누른 후 인덱스 번호가 반환되지만 다른 섹션을 다시 탭하면 번호가 인쇄되지 않습니다. 아마도보기가 이미 한 번로드 되었기 때문일 것입니다. 이 문제를 해결할 수있는 방법이 있습니까?
제휴하지 않습니다 StackOverflow