Как скопировать элементы картона в таблицу? - PullRequest
0 голосов
/ 26 августа 2011

У меня здесь есть задание, в котором я должен

создать приложение, которое копирует все элементы из картона в таблицу, которое детализируется до подробного вида указанного элемента из картона

.

Ниже я даю вам свой код файла RootViewController.m.Программа не работает и выдает ошибку SIGABRT в этой строке cell.textLabel.text = cellValue;.Подскажите, пожалуйста, что здесь может быть не так, и заранее спасибо.

#import "RootViewController.h"

@implementation RootViewController
@synthesize detailsViewController;

NSArray* pasteBoardItems;

- (void)viewDidLoad
{
    //  Get a reference to the system pasteboard
    UIPasteboard* pasteBoard = [UIPasteboard generalPasteboard];

    NSLog(@"%@", pasteBoard.items);

    pasteBoardItems = [pasteBoard.items valueForKey:@"public.utf8-plain-text"];
    pasteBoardItems = [pasteBoard.items valueForKey:@"public.item (kUTTypeItem)"];

    self.navigationItem.title = @"Pasteboard";

    [super viewDidLoad];
}

- (void)dealloc
{
    [pasteBoardItems release];
    [super dealloc];
}

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

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

   NSString *cellValue = [pasteBoardItems objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;

    // Configure the cell.
    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSUInteger row = [indexPath row];
    NSString *rowValue = [pasteBoardItems objectAtIndex:row];
    NSString *message = [[NSString alloc] initWithFormat:@"You have selected \"%@\"",rowValue];

    if(self.detailsViewController == nil){
        DetailsViewController *d = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:[NSBundle mainBundle]];

        self.detailsViewController = d;
        [d release];
    }
    [self.detailsViewController initWithTextSelected:message];
    [self.navigationController pushViewController:self.detailsViewController animated:YES];
}

@end

1 Ответ

0 голосов
/ 04 сентября 2011

SIGABRT в большинстве случаев означает, что вы хотите получить доступ к освобожденному объекту.

В вашем случае я предлагаю добавить строку [pasteBoardItems retain]; в конце метода - (void)viewDidLoad.

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