【问题标题】:RootViewController need to resort/reload data array xcode 4.3RootViewController 需要诉诸/重新加载数据数组 xcode 4.3
【发布时间】:2012-04-06 17:29:16
【问题描述】:

我正在实现一个示例,在该示例中,我从数据库中读取数据,将其放入数组中,对其进行排序,然后使用 RootViewController 显示它。 DB 读取和数组加载发生在 RVC 代码之前。所以,它起作用了,我在 RVC 创建的窗口中获取数据,并且那里还有一个导航控制器。

我想在导航控制器上添加一个按钮或其他东西,这样当你点击它时,它会将一个值发送回 RootViewController.m 文件,然后基于该值,我想使用数组并显示一次再次在 RootViewController 窗口中。

我不知道该怎么做。我必须对 .xib 和 RootViewController.m 文件进行哪些更改?

拜托,我很困惑。 %-0 非常感谢。

【问题讨论】:

    标签: xcode architecture ios4 reload


    【解决方案1】:

    这是相当多的,所以我会给出一些一般性的观点,如果其中任何一个引起问题,可能更容易解决较小的细节。

    在您的 RVC 的 viewDidLoad 方法中,您可以创建一个按钮并将其设置为控制器导航项中的右按钮或左按钮。

    您可以将该按钮上的点击与控制器中的方法相关联,该方法可以在点击按钮时执行您想要的任何操作。 (但实际上,按钮不会发送值,因此您可能需要对这个想法进行更多解释。)

    如果您要显示数组内容,我假设 RVC 有一个表格视图,所以一旦数组(我假设是可变数组)重新排序,您可以告诉表格视图重新加载其数据。

    【讨论】:

    • 谢谢。我可以使用多个按钮/选项卡...它们将是您可以排序的列名,因此只要我可以区分它们,它们就不必发送值。谢谢!就表格视图而言,它不在 xib 中,它是在 RVC 中以编程方式创建的,因此它显示了行,点击一行,它显示了详细信息,它可以工作,尽管我修改了代码以使其执行我的出价。因此,假设我根据 RVC 窗口中的操作对数组进行排序,那么我如何告诉表视图重新加载它的数据?
    • 我所做的(它不起作用,但我需要了解原因)是将按钮栏按钮拖到 IB 中导航控制器的页脚部分。我已将它的操作连接到 RVC 文件所有者。有一个合成 bButton1;在实现和一个动作 - (IBAction)buttonPressed:(id)sender { NSLog(@"howdy doody"); } 。界面中:属性(强,非原子) UIBarButtonItem *bButton1;当我按下按钮时,它退出并在日志中看到:-[UIApplication buttonPressed:]: unrecognized selector sent to instance
    • 错误表明您将按钮的操作连接到 UIApplication 对象而不是 RVC。我不知道为什么会这样,但请仔细检查为文件所有者设置的身份。
    • 菲利普,我只是表示您的回答很有帮助,不幸的是,除了表达我的感激之情,我没有做任何其他事情的声誉。非常感谢您,先生。我非常感谢您的意见,这非常有帮助。干杯。
    【解决方案2】:

    在回答您的第二个问题时,一旦您使用了您的数组(或根据您的意愿更新了您的数据),您可以强制以编程方式重新加载表格视图

    [tableView reloadData];
    

    “tableView”是指向表格视图的实例变量

    【讨论】:

    • 谢谢。我 THINK 我通过说 [self.tableView reloadData] 做到了这一点。但我不确定,我放了一些 NSLog stmts 并且它不会重新执行 viewDidLoad ... reloadData 会导致 viewDidLoad 被重新执行吗?我确实知道由于日志语句而进入按钮的操作例程,但是当它在该 stmt 之后立即尝试重新加载数据时,它似乎没有发生。请指教。提前致谢。复活节快乐。
    • 不,reloadData 只会导致 tableView 数据源被更新。如果你想看到这种情况发生,你可以放置一个 NSLog 语句或中断: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这不会导致 viewDidLoad重新执行。
    • Piwacket,只是一个友好的说明。菲利普和我都为你提供了帮助。您最好将答案标记为正确并可能“投票”他们。
    • 感谢您的提醒...我完全是打算这样做的。真的很感谢你的帮助。我已经表示这两个答案都有帮助。我不知道如何指出哪一个是正确的,就其本身而言(实际上,他们都是)我无法投票赞成,因为我缺乏声誉。无论如何,请 MobileVet,让我知道是否还有其他我可以做的事情来表达我的感激之情。再次感谢您的提醒。
    • 别担心,我忘记了需要 15 个代表才能投票...话虽如此,您可以通过检查左上角向上/向下投票图标下方的复选标记来“接受”菲利普的回答答案的一角。 (它会变成绿色)这也会给你一些代表。 :) 我会接受他的,我的更像是一个补充,也许你可以在以后有代表时投票。
    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 2015-07-23
    相关资源
    最近更新 更多