2

スライドメニュー「SASlideMenu」にこのスクリプトを使用しています。デフォルトで最初の項目を選択しようとしていますが、成功しません。誰もそれを行う方法を知っていますか?

私はこれを試しました:

(void) viewDidLoad{
    [super viewDidLoad];

    ...

    self.tableView.delegate = self;
    NSString *CellIdentifier = @"homeCell";
    UITableViewCell *homeCell = [self.tableViewdequeueReusableCellWithIdentifier:CellIdentifier]; 
    [homeCell setSelected:YES];

}

UPDATE(説明の改善)

「SASlideMenuViewController.m」でこれを行っています

更新 2

主な質問に加えて、ユーザーが applicationWillEnterForeground に入ったときに、最初のセルを選択してホームページに切り替える方法を尋ねたいと思いますか? PS「重複」のように扱われる可能性があるため、別の質問を開きたくありません。

UPDATE 3 ユーザーが別のビューにいるときにホームページに切り替える方法がわかりません。たとえば、ユーザーがアプリ (フォアグラウンド) に戻ったときにユーザーをホームページに切り替えますが、これは次の状況では機能しません。SASlideMenuにはカテゴリのリストがあり、このカテゴリの1つに移動してからアプリを終了してアプリに戻ると、ホームページに切り替わりますが、それで問題ありません。しかし、SASlideMenu のカテゴリの 1 つをクリックしてから、記事の 1 つのカテゴリ ビュー内をクリックしてアプリを終了し、再度入力すると、ホームページに切り替わらず、理由がわかりません。ナビゲーションベースのアプリです。

4

4 に答える 4

4

質問1:アプリの起動時にデフォルトで最初のアイテムを選択するには

SASlideMenu質問に記載されているコードを使用していると仮定します。あなたのExampleMenuViewControllerクラスでは、以下を追加する必要があります、

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    if (indexPath) {
        [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
    }
}

_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ __ _

質問2:デフォルトで最初の項目を選択し、ホーム画面を設定するにはapplicationWillEnterForeground

ExampleMenuViewController.h次のメソッド宣言をファイルに追加します。

@interface ExampleMenuViewController :SASlideMenuViewController<SASlideMenuDataSource>

- (void)selectFirstRowAndSetHomePage;

@end

ExampleMenuViewController.m次のメソッドをファイルに追加します。

- (void)selectFirstRowAndSetHomePage {

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    if (indexPath) {
        [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
    }

    NSString *identifier= [self.slideMenuDataSource initialSegueId];
    if (identifier) {
        [self performSegueWithIdentifier:identifier sender:self];
    }
}

SASlideMenuAppDelegate.hクラスに次を実装します。

#import "ExampleMenuViewController.h"

と、

- (void)applicationWillEnterForeground:(UIApplication *)application {

    ExampleMenuViewController *exampleMenuViewController = (ExampleMenuViewController *)self.window.rootViewController;
    [exampleMenuViewController selectFirstRowAndSetHomePage];
}

それは役立つはずです。

_ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ __ _

于 2012-11-13T07:16:09.617 に答える
1

これはあなたのために働くはずです:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}
于 2012-11-12T15:01:23.773 に答える
0

このコードで確認してください:

NSIndexPath *indexPath = [[NSIndexPath alloc] initWithIndex:0];
UITableViewCell *homeCell = [[self.tableView cellForRowAtIndexPath:indexPath] setSelected:YES];
于 2012-11-08T11:58:17.480 に答える
0

viewDidLoad呼び出されると、テーブルはまだ空です。テーブル内にあるセルを取得していません。

このコードを試してください:

NSIndexPath firstCellIndex = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView selectRowAtIndexPath:firstCellIndex
                            animated:NO 
                      scrollPosition:UITableViewScrollPositionNone];

に入れviewDidAppearます。

于 2012-11-08T12:10:55.380 に答える