我将此脚本用于幻灯片菜单“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中的一个类别,然后在其中一篇文章中单击类别视图并退出应用程序并再次输入时,它不会切换到主页,我不知道为什么。它是基于导航的应用程序。
答案 0 :(得分:4)
假设您使用的是问题中提到的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> _ 强>
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
。