Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 委托未接收数据_Ios_Delegates_Xcode4.2 - Fatal编程技术网

Ios 委托未接收数据

Ios 委托未接收数据,ios,delegates,xcode4.2,Ios,Delegates,Xcode4.2,我有一个使用故事板的简单设置,其中一个viewcontroller(MainViewController)通过代理与另一个(JoinedViewController)对话。在准备工作之前一切都很好。在这里,我为接收的viewcontroller声明roomData和标签文本,但两者都没有收到 MainViewController.m - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([se

我有一个使用故事板的简单设置,其中一个viewcontroller(MainViewController)通过代理与另一个(JoinedViewController)对话。在准备工作之前一切都很好。在这里,我为接收的viewcontroller声明roomData和标签文本,但两者都没有收到

MainViewController.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"JoinRoom"]) {
        UINavigationController *navigationController = segue.destinationViewController;
        JoinedViewController *joinedViewController = [[navigationController viewControllers]objectAtIndex:0];
        joinedViewController.label.text = self.roomName;
        joinedViewController.roomData = self.roomData;
        joinedViewController.delegate = self;
    }
}
MainViewController.h增量:

@interface MainViewController : UIViewController <JoinedViewControllerDelegate, UITextFieldDelegate>

@property (weak, nonatomic) IBOutlet UITextField *textField;
@property (nonatomic, copy) NSString *roomName;
@property (nonatomic, weak) S3ListObjectsResult *roomData;
@interface MainViewController:UIViewController
@属性(弱,非原子)IBUITEXTFIELD*textField;
@属性(非原子,副本)NSString*roomName;
@属性(非原子,弱)S3ListObjectsResult*roomData;
JoinedViewController.h声明:

@interface JoinedViewController : UITableViewController 

@property (nonatomic, weak) id <JoinedViewControllerDelegate> delegate;
@property (nonatomic, weak) S3ListObjectsResult *roomData;
@property (weak, nonatomic) IBOutlet UILabel *label;
@接口JoinedViewController:UITableViewController
@属性(非原子,弱)id委托;
@属性(非原子,弱)S3ListObjectsResult*roomData;
@属性(弱,非原子)IBUILabel*标签;

我想你有两个不同的问题。roomData应该声明为强,而不是弱(在两个类中)。roomName的问题不在于字符串本身,而在于您试图在JoinedViewController的viewDidLoad被调用之前在标签上设置它。在加载其他控制器的视图之前,无法访问其UI元素。您应该传递字符串,改为roomData,并将其设置在JoinedViewController的ViewDidDisplay方法的标签上。

尝试使用@property(非原子,赋值)id delegate,确保在JoinedViewController中合成但不要释放委托。当您说“您应该传递字符串,而不是roomData,并将其设置在…”中的标签上时,您的意思是什么?如何从Main传入roomData?@user592419,这意味着在JoinedVC中创建一个字符串属性,并像处理roomData一样:joinedViewController.roomName=self.roomName。然后在ViewDidDisplay中,self.label.text=self.roomname谢谢,这真的很有帮助。