search

Home  >  Q&A  >  body text

ios - 关于UIscrollView里面放tableView,push跳转不了的问题.

项目演示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

大家讲道理大家讲道理2892 days ago370

reply all(3)I'll reply

  • 迷茫

    迷茫2017-04-18 09:07:55

    Have a few questions

    1. 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

    2. 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

    3. MainVC needs to be componentized. Define a contain viewcontroller to manage the scrolling viewController below (optimize after implementation)

    4. There are many demos on the Internet that imitate NetEase News. You can learn from them

    reply
    0
  • 大家讲道理

    大家讲道理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.

    1. -(void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath ; not called

    reply
    0
  • 黄舟

    黄舟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

    reply
    0
  • Cancelreply