2009-08-03 13 views
1

タブバーから直接アクションシートを呼び出す方法はありますか?私はユーザーが適切なボタンでアクションシートを表示するタブバーの連絡ボタンを必要とするプログラムに取り組んでいます。事前UITabBarボタンからiPhone UIActionSheetが呼び出される

+0

タブバーではなく連絡先ボタンがあるツールバーである必要があります。 – mk12

答えて

2

おかげであなただけのタブのいずれかに関連付けられたビューコントローラを持っており、そのビューの平原を離れ、そしてのviewDidLoadでactionSheetを作ることができませんでしたか?

+0

それはその下のビューをねじ込みます。 –

+0

ああ、あなたは、現在のビューの上にアクションシートを開くために、タブバーをクリックしたいのですか?..あなたが言ったことを行うことができますが、新しいものにサブビューとして前のビューをロード..または何か..なぜメッセージや何かを書くために全く新しい意見を持っていないのですか? – mk12

+0

それはまさに私がやることです。ユーザーは、アクションシートを要求している新しいビュー(サイズや透明度が好き)を望んでいません。それを行う方法を理解しようとしているだけです。元の方法では、テーブルビューの一部が消去され、アクションシートは表示されません。 –

1

電子メールを表示していて、湾曲した矢印ボタンを押したときにメールアプリが表示され、「返信」アクションシートが表示されます。

+0

いいえ、メールはあなたが望むようにUITabBarではなくUIToolbarを使用します..あなたは何とかしてはいけないことをやってはいけません、UITabBarsはアプリケーションのセクション間をナビゲートするためのアクションです(あなたに連絡するなど) 。 – mk12

2

これは良いアイデアではないと言っています(これはツールバーを使って行うべきです)が、これは間違いなく可能です。

次のコードは、UITabBarControllerDelegateの方法のいずれかを実装し、タブバー項目の選択を回避し、代わりにUIActionSheetを作成し、表示します。

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
shouldSelectViewController:(UIViewController *)viewController 
{ 
    NSInteger choice = 0; // --> index of the view controller that should "act as button" 
    if (viewController == [tabBarController.viewControllers objectAtIndex:choice]) 
    { 
     UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil 
                  delegate:nil 
                cancelButtonTitle:@"Cancel" 
              destructiveButtonTitle:nil 
                otherButtonTitles:@"Send e-mail", @"Twitter", @"Whatever", nil]; 
     [sheet showFromTabBar:tabBarController.tabBar]; 
     return NO; 
    } 
    return YES; 
} 
+0

ありがとうございます - これは[sheet showFromTabBar:tabBarController.tabBar]として行うことができます。これは、このようにUIActionSheetを表示することが実際にサポートされていることを意味します。 – masty

+0

@mastyはうまく言った、私はそれに応じて私の答えに適応しました。それをARCにも適用しました。 –

1

私は何スティーブの後を理解することができると思います。私はTabBarControllerの第1要素を介して主な活動に到達しました。私は2番目のタブバー要素に、モーダルビューの電子メール、Facebookへのアクセス、またはTwitterへのアクセスを選択的に追加したいと思います。その選択肢がアクションシートを介して提供され、その最初のビュー・コントローラー(最初のタブバー選択肢)から「後ろ」にあるものを見失わないようにして、選択肢を扱う新しいビュー・コントローラーが表示されるようにするといいでしょう。これは、たとえば、ニュース記事を「共有する」ときに、「APモバイル」が行うことのようです。

@Adrian:それはに(明らかに)助けない理由(読み...)

その後、私はあなたのソリューションは、アウトオブボックスの仕事を得ることができませんでした..しかしが判明しました具体的にはアウトレットからドラッグ:ファイル所有者に委任する ***キャッチされていない例外 'NSInternalInconsistencyException'のためアプリを終了しています、理由: 'タブバーコントローラによって管理されているタブバーのデリゲートを変更することはできません。

私は

[rootController setDelegate:self]; 

乾杯を追加applicationDidFinishLaunchingでは、インターフェイス定義にUITabBarControllerDelegate(UIApplicationDelegateがすでに存在していたと私はさらに読んでいない)... と を追加するまで、私のデリゲートメソッドは無視されていました

関連する問題