项目演示GIF图:
http://ww1.sinaimg.cn/large/70421ae5jw1f43m036b22g20b50iknpd.gif
应该怎么做,我知道要这个项目要用2个scrollView.
"最新"这个页面是在stroyboard里面创建的视图,
"视频"是用代码创建再用通知的方法实现点击cell跳转新页面的.
"最新"页面点击cell的跳转代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
latestWebView *webView = [[latestWebView alloc] init];
webView.hidesBottomBarWhenPushed = YES;
webView.urlDetial = self.urlAry[indexPath.row];
[self.navigationController pushViewController:webView animated:YES];
NSLog(@"navigationController: %@",self.navigationController);
}
"视频"页面的点击cell跳转代码:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[[NSNotificationCenter defaultCenter] postNotificationName:@"noHideen" object:nil];
}
下面是在AppDelegate里面创建的主视图(MainViewController):
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
MainViewController * mainvc = [[MainViewController alloc] init];
UINavigationController * nvc = [[UINavigationController alloc] initWithRootViewController:mainvc];
self.window.rootViewController = nvc;
[self.window makeKeyAndVisible];
MainViewController的scrollView里面添加的各个视图:
[self.vcScrollview addSubview:self.nearbyVC.view];
[self.vcScrollview addSubview:self.latestVC.view];
[self.vcScrollview addSubview:self.videoVC.view];
[self.vcScrollview addSubview:self.collectionVC.view];
这样做以后发现点击tableView的Cell的时候push不了新页面(打印没有navigation),要用通知的方法才能实现push跳转:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tiaozhuan:) name:@"tiao" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tiaozhuan:) name:@"noHideen" object:nil];
(void)tiaozhuan:(NSNotification *)notifiction
{
NSLog(@"%@",notifiction.object);
if (notifiction.object == nil) {
self.barScrollview.hidden = NO;
}
else{
testViewController * tes = [[testViewController alloc] init];
self.barScrollview.hidden = YES;
[self.navigationController pushViewController:tes animated:YES];
}
}
1:我如果一定要实现点击cell以后push一个新页面. 是不是只能用通知的方法去实现?
2:不然的话只能在MainViewController里面创建几个tableView了(这样MainViewController肯定会很臃肿).
3:这个项目真的很简单,被困扰了一个星期,作为初学者很受打击,麻烦各位帮帮忙,或者您有更好的办法也请告知,谢谢.
描述得有点乱,万分感谢.需要源码的加我QQ 1404565175
迷茫2017-04-18 09:07:55
Have a few questions
About custom contain viewcontroller, you need to understand here. You will understand that self.navigationController cannot get navigationController and should be changed to self.parentViewController.navigationController
Then when addingSubview, mainVC needs to addChildViewController and has already called willMoveToParentViewController and other related methods
One of the big needs is about the management of n viewcontrollers. How to ensure performance. It needs to be made Reusable and cannot be loaded all at once
MainVC needs to be componentized. Define a contain viewcontroller to manage the scrolling viewController below (optimize after implementation)
There are many demos on the Internet that imitate NetEase News. You can learn from them
大家讲道理2017-04-18 09:07:55
If you don’t skip the pass.
1.self.navigationController can be empty, you can print it. If it is empty, your controller is no longer a navigationController. So I can't jump.
-(void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath ; not called
黄舟2017-04-18 09:07:55
On the "latest" page, click self.navigationController in the cell, which is the controller where the tableview is located, not mainVC. You need to get the navigation controller of main and then jump