簡體   English   中英

iPhone SDK:如何在標簽欄上獲取選定的標簽項?

[英]iPhone SDK: How to get the selected tabitem on a tabbar?

我有這段代碼-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item

我正在尋找的是一個代碼段,該段代碼說明了如何檢測大概是使用item的代表中按下了哪個按鈕。

因此,也許我的標簽欄上排列了1-4個按鈕。 我的用戶按下按鈕位置2。我需要知道這一點,因此我可以調出適合該按鈕的視圖。

我嘗試了類似的方法,但是沒有用。

NSInteger *barIndex = [[barTab items] IndexofObject:item];

如果有人可以提供一些可行的示例代碼,那就太好了。

提前致謝。

當您創建UITabBarItem時,您需要為它們分別指定一個特定標簽。 - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item方法時,請讀出標記號。

NSInteger tag = item.tag;

使用項目的索引不適用於標簽欄,因為用戶可以更改標簽的順序。


優良作法是為每個標簽使用一個枚舉,這樣就不會在代碼中散布一堆“隨機”數字。

typdef enum {
  JPButton1,
  JPButton2,
  JPButton3
} JPButtonType

然后在您的tabBar:didSelectItem:方法中,您可以像這樣測試標記:

if (item.tag == JPButton1) {
  // do some stuff with button one here
}

我意識到這個問題已經很老了,但這也許將來會對某人有所幫助:

UITabBarController具有一個名為selectedIndex的屬性。 例如,如果將UITabBarController聲明為myTabBar ,則始終可以通過調用來獲取當前選定的選項卡索引

[myTabBar selectedIndex]

第一個選項卡等於0,第二個選項卡等於1,依此類推...

我知道這則帖子已經有好幾年了,但是您使用的是正確的路線,而不是使用

NSInteger *barItem = [[tabBar items] indexOfObject:item];

你需要使用

int barItem = [[tabBar items] indexOfObject:item];

這是因為

indexOfObject:item 

將返回一個int而不是NSInteger。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM