2015-05-26 2 views
0

Складывает мой мозг вокруг этого. Ive получил мой элемент tableview, связанный с secondviewcontroller. Я пытаюсь передать свои данные на ярлык, когда я нажимаю элемент в представлении таблицы. Однако я получаю сообщение об ошибке в моем коде forforsegue. Линия, которая дает мне вопросы:нет видимого интерфейса для UILabel объявляет объект-селекторAtIndex

destViewController.toDoItemName = [toDoItem objectAtIndex: indexPath.row];

объектAtIndex определен в моем ViewController, но не в моем SecondViewController, поскольку он не должен быть. Как я могу это сделать?

Весь источник здесь: https://github.com/martylavender/LittleToDoApp/tree/Storyboards

#import "SecondViewController.h" 
#import "ViewController.h" 

@interface SecondViewController() 

@end 

@implementation SecondViewController 

@synthesize toDoItem; 
@synthesize toDoItemName; 
@synthesize tableView; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    toDoItem.text = toDoItemName; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 


// In a storyboard-based application, you will often want to do a little preparation before navigation 
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([segue.identifier isEqualToString:@"showRecipeDetail"]) { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     SecondViewController *destViewController = segue.destinationViewController; 
     destViewController.toDoItemName = [toDoItem objectAtIndex:indexPath.row]; 
    } 
} 

@end 

ответ

2

Ваш вопрос в том, что вы выполняете метод на UILabel, который не существует. Метод objectAtIndex: доступен на NSArray и подобных объектах, но не на UILabel.

Мне кажется, что вы пытаетесь получить содержимое метки на выбранном UITableViewCell.

Если да, то вы могли бы получить содержимое этикетки ячейки следующим образом:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"showRecipeDetail"]) { 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     SecondViewController *destViewController = segue.destinationViewController; 
     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
     destViewController.toDoItemName = cell.textLabel.text; 
    } 
} 

Edit:
Кроме того, ваш prepareForSegue: код должен быть в реализации UIViewController, который получает вас к SecondViewController, а не к реализации контроллера представления назначения, как он есть здесь.

+0

Так что я должен закончить с чем-то вроде этого: - (Недействительными) prepareForSegue: (UIStoryboardSegue *) переход отправителя (идентификатор) отправитель { если ([segue.identifier isEqualToString: @ "toDoItemCell"]) { UITableViewCell * cell = [tableView cellForRowAtIndexPath: indexPath]; destViewController.toDoItemName = cell.textLabel.text; } } К сожалению, я не могу показаться, чтобы добавить разрывы строк в моем комментарии назад – Marty

+0

я редактировал его уточнить, что я имел в виду. Это то, что вы пытаетесь сделать? Получить текст с метки в выбранной ячейке? – benhameen

+0

Да, это именно то, что я пытаюсь сделать. На моем основном контроллере ViewController я ввожу текст. Это экономит. Я нажимаю на текст в ячейке и загружает SecondViewController с одной меткой. Эта метка должна выводить текст из выбранной ячейки в главном ViewController – Marty

Смежные вопросы