使我的脑袋在这周围。香港专业教育学院让我的tableview项目链接到secondviewcontroller。单击表格视图中的项目时,我试图将数据转换为标签。我的prepareforsegue代码中出现错误。给我的问题是:
destViewController.toDoItemName = [toDoItem objectAtIndex:indexPath.row];
objectAtIndex在我的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
最佳答案
您的问题是,您正在不存在的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;
}
}
编辑:
另外,您的
prepareForSegue:
代码应该在UIViewController的实现中,该实现将您带到SecondViewController,而不是在目标视图控制器的实现中(如此处所示)。关于ios - UILabel没有可见的接口(interface)声明选择器objectAtIndex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30469581/