検索

ホームページ  >  に質問  >  本文

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

大家讲道理大家讲道理2893日前372

全員に返信(3)返信します

  • 迷茫

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

    いくつかの質問

    1. カスタム包含ビューコントローラーに関しては、ここで理解する必要があります。self.navigationController は NavigationController を取得できないため、self.parentViewController.navigationController
      に変更する必要があります。次に、Subview を追加するときに、mainVC には addChildViewController と willMoveToParentViewController が必要です。その他の関連メソッド。

    2. の呼び出し。
    3. 大きなニーズの 1 つは、n 個のビューコントローラーのパフォーマンスを確保する方法です。再利用可能にする必要があり、一度にすべてをロードすることはできません。

    4. MainVC は、以下のスクロール ViewController を管理するためのビューコントローラーをコンポーネント化する必要があります (実装後に最適化します)
    5. インターネット上には NetEase News を模倣したデモがたくさんあります。
    6. から学ぶことができます。

      返事
      0
  • 大家讲道理

    大家讲道理2017-04-18 09:07:55

    パスをスキップしない場合。
    1.self.navigationController は空でも構いません。印刷できます。空の場合、コントローラーは NavigationController ではなくなります。だからジャンプできないんです。

    1. -(void)tableView:(UITableView )tableView DidSelectRowAtIndexPath:(NSIndexPath )indexPath は

    を呼び出しませんでした。

    返事
    0
  • 黄舟

    黄舟2017-04-18 09:07:55

    「最新」ページで、セル内の self.navigationController をクリックします。これは、mainVC ではなく、テーブルビューが配置されているコントローラーです。メインのナビゲーション コントローラーを取得して、

    にジャンプする必要があります。

    返事
    0
  • キャンセル返事