0

我有一個具有4個選項卡的TabBarControllers應用程序。現在,在didFinishLaunchingWithOptions我這樣做:獲取ViewController的名稱

UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; 
    lpgr.minimumPressDuration = 5.0; 
    lpgr.delegate = self; 
    [self.window addGestureRecognizer:lpgr]; 
    [lpgr release]; 

這部分工作,並長按手勢是在所有的四個選項卡識別。現在,我想傳遞用戶當前正在按下的當前ViewController的名稱,以便我可以將其傳遞到處理長按事件的函數中。

回答

8

你可以試試:

NSStringFromClass([YourViewController class]); 

和當前視圖控制器,使用:

NSStringFromClass([self class]); 
+0

但這隻會返回AppDelegate類而不是ViewController類。我想在appDelegate中做所有事情,而不是在每個ViewController中放入NSStringFromClass([self class])。 – Diffy 2012-03-02 04:53:42

+0

@Diffy看下面一個... !!!! – Kamarshad 2012-03-02 05:06:46

+0

@Diffy您可以爲選項卡VC中的每個VC創建公共方法(例如'selectedViewControllerName:'),然後可以調用所選VC的方法來獲取VC的正確名稱。 _「我想在appDelegate中做所有事情,而不是在每個ViewController中放置NSStringFromClass([self class]),如果是這樣,只需使用第一個ViewController,就可以通過選中VC的TAG來返回名稱。 – Kjuly 2012-03-02 05:51:59

1

你應該通過索引(0-3),並有將返回控制器的方法從索引(或將控制器放入公共數組中)。

4

試試下面一(更新)

照你說你已經添加了四個視圖控制器上的TabBar控制器。

得到的ViewController從TabBarController如:

UIViewController *current = tabBarController.selectedViewController; 

NSArray *controllerNameArray = [current childViewControllers]; 

的NSLog(@ 「的className%@」,[controllerNameArray objectAtIndex:0]);

我希望它真正幫助你...!

+0

謝謝,但它並沒有真正給我我想要的東西。我從你的代碼中得到了一條線索,我使用了UIViewController * current = tabBarController.selectedViewController; NSArray * className = [current childViewControllers]; NSLog(@「className%@」,[className objectAtIndex:0]);獲取課程名稱。 – Diffy 2012-03-02 05:41:51

+0

@Diffy,你好,很高興...... !!!!!你已經得到了你的答案。 – Kamarshad 2012-03-02 05:45:06