如何在SASlideMenu中默认设置选定的第一个单元格?

时间:2012-11-08 11:11:40

标签: ios xcode uitableview saslidemenu

我将此脚本用于幻灯片菜单“SASlideMenu”,我正在尝试默认选择第一项,但没有成功。有人知道怎么做吗?

我试过了:

(void) viewDidLoad{
    [super viewDidLoad];

    ...

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

}

更新(改进说明)

我在“SASlideMenuViewController.m”

中这样做

更新2

进一步的主要问题我想询问用户何时输入applicationWillEnterForeground如何选择第一个单元格并切换到主页? 附:我不想为此打开另一个问题,因为它可以被视为“重复”。

更新3 当用户在另一个视图上时,我不知道如何切换到主页。例如,当我回到app(前景)时,我们将用户切换到主页,但这在下一个情况下不起作用;在SASlideMenu我有类别列表,当我去其中一个类别,然后退出应用程序并再次回到应用程序,它切换到主页,这没关系。但是,当我点击SASlideMenu中的一个类别,然后在其中一篇文章中单击类别视图并退出应用程序并再次输入时,它不会切换到主页,我不知道为什么。它是基于导航的应用程序。

4 个答案:

答案 0 :(得分: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];
    }
}

<强> _ __ _ __ _ __ _ __ _ 的__ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ < / EM> __ _ __ _ __ _ __ _ __ _ __ < EM> _

问题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];
}

这应该有所帮助。

<强> _ __ _ __ _ __ _ __ _ 的__ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ < / EM> __ _ __ _ __ _ __ _ __ _ __ < EM> _

答案 1 :(得分:1)

这应该适合你:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
}

答案 2 :(得分:0)

检查此代码:

NSIndexPath *indexPath = [[NSIndexPath alloc] initWithIndex:0];
UITableViewCell *homeCell = [[self.tableView cellForRowAtIndexPath:indexPath] setSelected:YES];

答案 3 :(得分:0)

调用viewDidLoad时,您的表仍为空。你甚至没有拿走桌子里面的一个牢房。

试试这段代码:

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

并将其放入viewDidAppear