重新启动if语句或方法?

时间:2011-09-02 21:02:42

标签: iphone objective-c cocoa-touch uitableview

我正在实现一个UITableView并实现了- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath方法,并且在该方法中我有if循环(下面):

NSInteger row = [indexPath row];

if (self.someDetailViewController == nil) {
    if (row==0) {
        OneTableViewController *aDetail = [[OneTableViewController alloc] initWithNibName:@"OneDetail" bundle:nil];
        self.oneDetailViewController = aDetail;
        [aDetail release];
    } else if (row==1) {
        OneTableViewController *aDetail = [[OneTableViewController alloc] initWithNibName:@"TwoDetail" bundle:nil];
        self.oneDetailViewController = aDetail;
        [aDetail release];
    }
}

但是每次我在表视图中选择一些东西(比如说第0行)我都会进入二级视图(OneDetail),然后当我回去并选择另一行(第一行)时,我希望转到其他视图(TwoDetail)然而我被带到OneDetail(首先选择的原始行) - 当用户点击另一行时,它们是如何被带到最初的第一行的辅助视图窃听。反之亦然(即选择第1行并被带到TwoDetail然后返回并选择第0行并且也被带到TwoDetail OneDetail ......

我想知道当用户按下后退按钮或如何以其他方式克服我的问题时,是否有人知道如何'重启'if循环。非常感谢提前!

2 个答案:

答案 0 :(得分:0)

这不是循环。

您将详细视图控制器存储在实例变量oneDetailViewController中。

只有当someDetailViewController为nil时,最有可能的情况才是第一次执行该方法时,您将分配一个值。

使用“oneDetail”初始化的视图控制器。

很遗憾,您不会向我们展示剩余的代码。我假设你没有声明

self.someDetailViewController = nil;

在该方法中进一步向下。

为什么哟这样做==无论如何?什么是详细视图控制器在进一步处理中有用?只需在didSelectRowAtIndexPath结束时释放它,并在下次执行时创建一个新的。不需要保存它的实例变量。

不过,如果你有充分的理由知道这段不同寻常的代码,你没有与我们分享,那么我们当然可以就如何实现这一点提出建议 - 如果你告诉我们的话:)

答案 1 :(得分:0)

我怀疑第二次输入方法时,此检查返回false:

if (self.someDetailViewController == nil)

因此,你永远不会进入你检查哪一行的部分,而且你永远陷入了你先设置的那一行。