Iphone “我该怎么做?”;“连接”;将表视图转换为视图控制器

Iphone “我该怎么做?”;“连接”;将表视图转换为视图控制器,iphone,uiviewcontroller,uitableview,parameter-passing,Iphone,Uiviewcontroller,Uitableview,Parameter Passing,好吧,我知道这是一个模糊的概念性问题,但我真的需要帮助。如果您决定花时间阅读本文,请提前感谢。我永远不会考虑写这么多,除了这是一个如此伟大的论坛有这么多有帮助的人我认为这将是最好的地方问。 这都与这里的问题有关(你不必看它-我在下面解释一切): 我已经为同一个问题工作了好几天,但我意识到我肯定错过了一些重要的东西。我在谷歌上搜索了好几天,几天前我甚至买了两本Obj-C书籍(大约50%的人都读过),但我仍然在掌握一些似乎应该非常简单的东西。我显然对OOP很陌生,但我在HTML、perl、sql、p

好吧,我知道这是一个模糊的概念性问题,但我真的需要帮助。如果您决定花时间阅读本文,请提前感谢。我永远不会考虑写这么多,除了这是一个如此伟大的论坛有这么多有帮助的人我认为这将是最好的地方问。 这都与这里的问题有关(你不必看它-我在下面解释一切):

我已经为同一个问题工作了好几天,但我意识到我肯定错过了一些重要的东西。我在谷歌上搜索了好几天,几天前我甚至买了两本Obj-C书籍(大约50%的人都读过),但我仍然在掌握一些似乎应该非常简单的东西。我显然对OOP很陌生,但我在HTML、perl、sql、python以及一些古老的东西(如pascal和basic)方面的技能一般。我是一个n00b,但不是一个白痴(好吧,事实上,这段经历正在改变我的想法)

无论如何,我在这里的最终目标是简单地创建一个应用程序,在第一个视图(级别1)上有8个“普通”按钮,每个按钮基本上都做相同的事情——即显示一个简单的表视图(级别2),单元格中的数据可以单击继续向下钻取到细节(级别3)。非常基本和简单的概念。8个可能的级别2之间的唯一区别是将显示的数据。我已经构建了sql查询,它们的工作方式与我希望的每个按钮一样

因此,我的立场是:我有一个完美的工作应用程序,从第二级到下一级,一切都按照我的预期进行——查询工作正常,表格漂亮——这太棒了

此外,我还有另一个基于导航的应用程序,它在“1级”启动,并向我显示8个按钮(我在1级隐藏导航栏)。如果我单击level 1上的任何按钮,level 2视图(即导航栏+表格)将完全按照我的要求滑入视图。问题是这张表是空白的。无论我做什么,我都无法让第二个应用程序中的level 2向我显示数据,即使我可以在第一个应用程序中完美地显示所有数据。就我的一生而言,我不知道如何将1级和2级“联系起来”

希望你们能理解我试图弥合的这个鸿沟。由于级别2有8种可能性(同一个sql表上的sql查询只有很小的差异),我最初尝试了一种方法,将一个整数“传递”到级别2视图(在第一个应用程序中),然后根据传递的内容选择sql查询(参见上面的链接了解这一失败)。一旦我开始工作,我计划以后再弄清楚如何让按钮“传递”。然而,在花了大约16个小时的时间之后,我放弃了,决定制作8个不同的表视图控制器,除了查询之外,所有的代码都几乎相同。那样的话,如果我能在1级上只按一个按钮,只按2级中的一个,不带任何参数,我将是一个可怕但成功的程序员

不幸的是,即使这样对我也不起作用。我尝试了在Interface Builder中可以想到的所有可能的控件拖动和窗口/视图/表格组合,但无论我尝试了什么,数据都不会加载到表格视图中,即使在我的第一个应用程序中效果很好。我已经看完了每一行代码——它们都是一样的,只是有些东西必须“调用”或“启动”2级部分,而我就是不明白

所以,我将打破惯例/期望,在我的问题中不发布任何代码。我只是想知道-这怎么可能如此困难??我的分析能力很强,我理解得很快,但我必须说,在我的生活中,我从来没有被技术挑战弄得如此卑微

有人能在概念层面上向我解释一下我需要在这里做什么或我缺少什么吗?即使你给我一个链接,我会非常感激。我在youtube上看了几十个小时的教程,但我总是想看更多

当然,我愿意分享我的代码,但是代码太多了,而且我对这方面太陌生了,我真的不知道相关的部分在哪里。另外,我真的很想知道这一切是如何运作的,这样我就能帮助别人了。如果这里有PM这样的东西,如果你愿意看的话,我会发电子邮件给你。一旦我得到它的工作,我会张贴在这里的代码。我必须相信还有其他人在寻找和我一样的东西。然而,更重要的是,我只想从更高的层面上知道,解决我的问题的正确方法是什么?如果你看一下我的链接,你会发现我一直在尝试什么(那就是将一个整数传递给填充表的方法),但是正如我所说的,我基本上放弃了,因为我没有取得任何进展。人们试图帮助我,但我是个白痴

谢谢你忍受了我那令人痛苦的长消息。如果你能走到这一步,给我一些建议,我会洗耳恭听的。不过,老实说,如果你告诉我,我应该放弃这一切,使用核心数据,我会哭的。我真的认为我没有时间想出一种完全不同的数据管理方法。正如我所说的,我对我的应用程序的数据库和查询部分非常满意——它只是管理奇怪的视图并在它们之间传递数据,这让我很痛苦


非常感谢您的帮助。如果我正确理解了您的问题,您将询问如何初始化视图控制器并传入一些数据以改变其行为。这里要理解的关键概念是如何在Objective-C中初始化对象。对于刚接触iOS的开发人员来说,最常见的问题之一是:

?

是的,有八个不同的链接。(好的,第八个链接有点离题,但已经足够近了。)有几种方法可以做到这一点,我将简要介绍它们。我还将描述自定义初始值设定项,这是一个相关的点a
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

  //Create a ProductPageViewController
  ProductPageViewController *ppvc = [[ProductPageViewController alloc] initWithNibName:@"ProductPageViewController" bundle:nil];
  //set the property on our ProductPageViewController
  [ppvc setProductID:42];
  //We would usually present the PPVC here.
  //After presenting, remember to release the view controller
}
//A method to store the data
- (void)storeData:(id)pageID{
    [[NSUserDefaults setObject:pageID forKey:@"pageID"];
}

- (void)showNewPPVC{

  ProductPageViewController *ppvc = [[ProductPageViewController alloc] initWithNibName:@"ProductPageViewController" bundle:nil];        
  //Show and then release the PPVC
}
- (id)initWithNibName:(NSString *)nibNameOrNil Bundle:(NSBundle *)bundleNameOrNil;
- (id)initWithStyle:(UITableViewStyle)style;
- (id) initWithProductID:(int)productID;
- (id) initWithProductID:(int)productID{
 self = [super init];

 return self;
}
- (id) initWithProductID:(int)productID{
 self = [super initWithNibName:@"ProductPageViewController" Bundle:nil];

 return self;
}
- (id) initWithProductID:(int)productID{
 self = [super initWithNibName:@"ProductPageViewController" Bundle:nil];

   if(self){
     self.prodID = productID;
   }

 return self;
}
      - (id) initWithProductID:(int)productID{
        self = [super initWithStyle:UITableViewStyleGrouped];

        if(self){
          self.prodID = productID;
        }

        return self;
      }