Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 滚动tableview而用户不注意_Iphone_Cocoa Touch_Uitableview - Fatal编程技术网

Iphone 滚动tableview而用户不注意

Iphone 滚动tableview而用户不注意,iphone,cocoa-touch,uitableview,Iphone,Cocoa Touch,Uitableview,我需要在RootController的初始加载时滚动一个tableview。问题是,我必须等到CellForRowatineXpath完成后,才能使用ScrollToRowatineXpath执行任何操作。CellForRowatineXpath似乎是我加载表后最后一个要挂接的事件。因为视图已经加载,所以表是可见的,因此滚动是可见的。我需要一些方法,使表加载,滚动和淡入淡入或什么,使它不只是弹出 目标是当tableview最初显示时,让tableview位于第五行。我现在当然可以这样做,但是用户

我需要在RootController的初始加载时滚动一个tableview。问题是,我必须等到CellForRowatineXpath完成后,才能使用ScrollToRowatineXpath执行任何操作。CellForRowatineXpath似乎是我加载表后最后一个要挂接的事件。因为视图已经加载,所以表是可见的,因此滚动是可见的。我需要一些方法,使表加载,滚动和淡入淡入或什么,使它不只是弹出

目标是当tableview最初显示时,让tableview位于第五行。我现在当然可以这样做,但是用户看到了滚动动作。滚动动作是我想要在视图初始加载时隐藏的

我确实有一个类级变量来跟踪CellForRowatineXpath中的最后一个索引,所以我不会为每个CellForRowatineXpath迭代触发ScrollToRowatineXpath


欢迎您提出任何其他建议。

我不知道这是否是您想要的,也许我不理解您的意图,但下面是:

如果是cellForRow。。。您认为需要挂接到,显然这将被调用几次,并且您必须知道上次调用它的时间(表视图将为所有可见行调用它,可能还有视图框架外的一行或两行)。在对该方法的每次调用结束时,触发一个延迟的方法调用(延迟地执行废话),但在cellForRow的开头。。。方法,取消该延迟执行。这样,当上次为表单元格的初始加载调用该方法时,将延迟调用helper方法,该方法将滚动表等

我相信myTableView.hidden=YES将有助于启动,然后在滚动完成后设置为“NO”。问题隐藏=是对tableview没有影响。它是一个连接的IB插座


您可能希望在ViewWillAspect(或DidAspect)中设置一个类属性,以指示是否要执行延迟的滚动操作,并在执行滚动操作后清除该属性。

我不知道这是否是您正在寻找的,也许我不理解您的意图,但下面是:

如果是cellForRow。。。您认为需要挂接到,显然这将被调用几次,并且您必须知道上次调用它的时间(表视图将为所有可见行调用它,可能还有视图框架外的一行或两行)。在对该方法的每次调用结束时,触发一个延迟的方法调用(延迟地执行废话),但在cellForRow的开头。。。方法,取消该延迟执行。这样,当上次为表单元格的初始加载调用该方法时,将延迟调用helper方法,该方法将滚动表等

我相信myTableView.hidden=YES将有助于启动,然后在滚动完成后设置为“NO”。问题隐藏=是对tableview没有影响。它是一个连接的IB插座


您可能希望在ViewWillAspect(或DidAspect)中设置一个类属性,以指示是否要执行延迟的滚动操作,并在执行滚动后清除该属性。

尝试覆盖视图控制器中的ViewWillAspect并在那里设置视图。这在视图初始化后但在显示之前调用。请注意,每次显示视图时(包括返回导航或取消模式弹出窗口),都会调用此函数,因此如果您只想在第一次创建视图时滚动,则可能需要使用标志,如下面的代码示例所示

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear: animated];

  if (!alreadyDisplayed) {
    // now scroll to the right row
    [self.tableView 
       scrollToRowAtIndexPath: [NSIndexPath indexPathForRow: 5 inSection: 0] 
       atScrollPosition: UITableViewScrollPositionTop animated: NO];

    alreadyDisplayed = true;
  }
}

尝试覆盖视图将出现在视图控制器中,并在那里设置视图。这在视图初始化后但在显示之前调用。请注意,每次显示视图时(包括返回导航或取消模式弹出窗口),都会调用此函数,因此如果您只想在第一次创建视图时滚动,则可能需要使用标志,如下面的代码示例所示

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear: animated];

  if (!alreadyDisplayed) {
    // now scroll to the right row
    [self.tableView 
       scrollToRowAtIndexPath: [NSIndexPath indexPathForRow: 5 inSection: 0] 
       atScrollPosition: UITableViewScrollPositionTop animated: NO];

    alreadyDisplayed = true;
  }
}

作为这个领域的新手,我认为这个问题可以像这样很容易地解决

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {



        if(!firstTime){
            [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
        }

    }


- (void) timerFired:(NSTimer *)aTimer{
    firstTime = YES;
    [aTimer invalidate];
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:([self.tableView numberOfRowsInSection:0]-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}

希望这能有所帮助。

作为这个领域的新手,我认为这个问题可以像这样很容易地解决

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {



        if(!firstTime){
            [NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
        }

    }


- (void) timerFired:(NSTimer *)aTimer{
    firstTime = YES;
    [aTimer invalidate];
    [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:([self.tableView numberOfRowsInSection:0]-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}

希望这有帮助。

我已经更新了问题,以反映我正在跟踪cellForRow迭代。我相信我已经用延迟方法完成了你的建议。我在查找最后一个cellForRow迭代时没有任何问题。唯一的问题是隐藏滚动动作。我已经更新了问题以反映我正在跟踪cellForRow迭代。我相信我已经用延迟方法完成了你的建议。我在查找最后一个cellForRow迭代时没有任何问题。唯一的问题是隐藏滚动动作。