展开segue“在类型'AddBusStopViewController'上找不到'BusStopItem'的属性”

Posted

技术标签:

【中文标题】展开segue“在类型\'AddBusStopViewController\'上找不到\'BusStopItem\'的属性”【英文标题】:Unwind segue "Property of 'BusStopItem' not found on type 'AddBusStopViewController'"展开segue“在类型'AddBusStopViewController'上找不到'BusStopItem'的属性” 【发布时间】:2015-01-29 06:58:06 【问题描述】:

本题基于苹果 x-code 教程here。

当我调用查看 segue 源的 unwindBusList 函数时出现错误。我已经在注释掉这些行的情况下对其进行了测试,除了 BusStopItem 没有被添加之外,其他一切似乎都运行良好。

在类型上找不到 BusStopItem 的属性 'AddBusStopViewController'

在这一行:

BusStopItem *item = source.busStopItem;

YourBusStopsTableViewController.m

#import "YourBusStopsTableViewController.h"
#import "BusStopItem.h"
#import "AddBusStopViewController.h"


@interface YourBusStopsTableViewController ()

@property NSMutableArray *busStopItems;

- (IBAction)unwindBusList:(UIStoryboardSegue *)segue;
@end

@implementation YourBusStopsTableViewController

- (IBAction)unwindBusList:(UIStoryboardSegue *)segue 
    AddBusStopViewController *source = segue.sourceViewController;
    BusStopItem *item = source.busStopItem;
    if (item != nil) 
        [self.busStopItems addObject:item];
        [self.tableView reloadData];
    

AddBusStopViewController.h

#import <UIKit/UIKit.h>
#import "BusStopItem.h"

@interface AddBusStopViewController : UIViewController

@property BusStopItem *busStopItem;

@end

AddBusStopViewController.m

#import "AddBusStopViewController.h"

@interface AddBusStopViewController ()
@property (weak, nonatomic) IBOutlet UIBarButtonItem *saveButton;
@property (weak, nonatomic) IBOutlet UITextField *stopNumField;
@property (weak, nonatomic) IBOutlet UITextField *nameField;

@end

@implementation AddBusStopViewController

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


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



#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    if (sender != self.saveButton) return;

    if (self.nameField.text.length > 0 && self.stopNumField.text.length > 0) 
        self.busStopItem = [[BusStopItem alloc] init];
        self.busStopItem.itemName = self.nameField.text;
        self.busStopItem.stopNum = [self.stopNumField.text intValue];
        self.busStopItem.fetching = NO;
    




@end

BusStopItem.h

#import <Foundation/Foundation.h>

@interface BusStopItem : NSObject

@property NSString *itemName;
@property NSInteger stopNum;
@property BOOL fetching;

@end

感谢任何和所有反馈,这已经困扰了我几个小时,但没有任何解决我的问题。

提前致谢。

【问题讨论】:

您使用的代码与此处粘贴的完全相同吗?因为错误描述与您的代码不匹配。 是的,我刚刚查过了,我可以链接一个仓库。github.com/Dutchgoose/BusApp 【参考方案1】:

问题是我为视图创建的 Objective-c 文件不在适当的目录中。尽管它们在 xcode 中出现在正确的位置(实际上是),但这些版本在我保存时并未更新。我用适当的文件替换了未写入的文件,一切正常。

【讨论】:

以上是关于展开segue“在类型'AddBusStopViewController'上找不到'BusStopItem'的属性”的主要内容,如果未能解决你的问题,请参考以下文章

未触发自定义 segue 的展开

以编程方式展开 segue

展开后执行segue

以编程方式展开 Segue - 新的转折

以编程方式展开 Segue?

使用后退按钮展开 segue 时执行代码