UITableView для отображения пар ключ-значение - PullRequest
1 голос
/ 30 августа 2011

У меня есть список имени и значений, которые мне нужно отобразить.Трудно поддерживать множество меток и связанных текстовых полей содержимого в IB, поэтому я думаю об использовании UITableView.Есть ли способ исправить метки для ячеек, а затем либо просто привязать к NSDictionary и отобразить имена ключей / значений, либо исправить ячейки и метки в UITableView?

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

Вы не можете привязаться к табличному представлению, как вы это делаете при написании приложений для OS / X, но два метода, приведенные ниже, в источнике данных вашего UITableView должны помочь:

@property (strong, nonatomic) NSDictionary * dict;
@property (strong, nonatomic) NSArray * sortedKeys;

- (void) setDict: (NSDictionary *) dict 
{
    _dict = dict;
    self.sortedKeys = [[dict allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)];

    [self.tableView reloadData];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.sortedKeys count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath: indexPath];

    NSString * key = self.sortedKeys[indexPath.row];
    NSString * value = dict[key];

    cell.textLabel.text = key;
    cell.detailTextLabel.text = value;

    return cell;
}

или в Swift

var sortedKeys: Array<String> = []
var dict:Dictionary<String, String> = [:] {
didSet {
    sortedKeys = sort(Array(dict.keys)) {$0.lowercaseString < $1.lowercaseString}
    tableView.reloadData()
}
}

override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    return sortedKeys.count
}

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!  {

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as UITableViewCell

    let key = sortedKeys[indexPath.row] as String
    let value = dict[key] as String

    cell.textLabel.text = key
    cell.detailTextLabel.text = value

    return cell
}
1 голос
/ 30 августа 2011

Просто прочитайте это Руководство по программированию табличного представления для iOS , и все будет ясно для вас.

Вы можете использовать следующие типы ячеек табличного представления: UITableViewCellStyleValue1 или UITableViewCellStyleValue2.У них есть две метки, которые вам нужны (одна для ключа и одна для значения).

Или вы можете создать свой собственный стиль ячейки и установить значения для меток, используя там теги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...