numberOfRowsInSection和prepareForSegue方法问题

时间:2017-05-26 11:16:51

标签: ios objective-c uitableview

我是iOS开发的新手,我在计算包含字典的Array中的对象时遇到了麻烦。

我的数据结构如下所示,它位于另一个自定义类中:

Library header file Library implementation file

会有相当多的(现在只有4个用于测试),我需要用关键的kEviela计算NSStrings。

我需要这个计算来计算tableView所需的行数:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return ?;

我还有一个detailView,我需要分别显示每个String。那么我怎样才能在prepareForSegue方法中做到这一点?

4 个答案:

答案 0 :(得分:0)

它只是

return _library.count; 

这是数组中字典的数量。

无论如何,我建议将字典映射到自定义类。

获取键kEviela的所有值的数组写

NSArray *kEvielaArray = [_library valueForKey: kEviela];

这是valueForKey作为KVC方法的罕见情况之一。

答案 1 :(得分:0)

首先,我认为您可以通过计算字典对象来显示行数。我使用NSMutableArray转换为字典,因为它更容易操作。但它完全是个人的。

我还有一个detailView,我需要分别显示每个字符串。

你可以做什么?

有一个名为 didSelectRowAtIndexPath 委托方法的函数。

当您选择行时,将调用此函数。在此函数中,您将获取您的detailView控制器,并根据您的数据将值保留为其中一个变量(NSString或Something)。 你可以在赋值后从这里以编程方式调用segue。

举个例子:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:NO];

    DetailViewController *detailVC = [[DetailView alloc] initWithNibName:@"DetailView" bundle:nil];

    detailVC.userName = [userList objectAtIndex:indexPath.row];

    [self.navigationController pushViewController:detailVC animated:YES];

}

或者,如果你不想这样使用,那么在 prepareForSegue 方法(你所谓的) 抓住目标视图控制器并像以前一样分配值。那就是它。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
    {
        // Get reference to the destination view controller
        YourViewController *vc = [segue destinationViewController];
        vc.dictionary = [youdictionary mutableCopy];


        // Pass any objects to the view controller here, like...
        [vc setMyObjectHere:object];
    }
}

答案 2 :(得分:0)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return _library.count;

}

以上是获得数组计数的方法。

首先你有数组,然后你可以找到字典值。

NSString *kEvielaValue = [_library valueForKey: "kEviela"];

答案 3 :(得分:0)

试试这个<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

[[_library valueForKey: kEviela]count];会选择一个包含[_library valueForKey: kEviela]所有值的NSArray,而count消息将为您提供kEviela主阵列中这些元素的数量