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