我是ARC和Storyboarding的新手。我已将IBOutlet
设置为UITableView
的{{1}}。
一段时间后,我的UIViewController
设置为nil,我无法从其他类重新加载它。
这是我的IBOutlet
dataTable
:
IBOutlet
开始时@property (weak, nonatomic) IBOutlet UITableView *dataTable;
不是dataTable
,而是当我尝试从其他类(通过appDelegate)访问它时。如何解决这个问题?
更新
我从nil
UIViewController
完成后,我有数据显示,我从[appDelegate.myClass loginWithUserName:loginField.text andPassword:pwdField.text];
方法调用此代码:
loginWithUserName
这是我 MyViewController *controller = [[AppDelegate sharedStoryboard] instantiateViewControllerWithIdentifier:@"MyViewController"];
[controller audioLoaded];
中的方法,重新加载数据
UIViewController
答案 0 :(得分:1)
将属性设置为strong保留对象:
@property (strong, nonatomic) IBOutlet UITableView *dataTable;
虽然从另一个视图控制器访问UITableView并不是一个好习惯。
编辑:
您应该重新考虑整个方法,将该逻辑从您的appdelegate移动到将执行登录的专用类。您可以创建一个UIViewController与表可以实现的简单协议,然后,在调用login方法时,将引用传递给当前的viewcontroller,如
loginWithUserName:andPassword:andCaller:(id<LoginDelegate>)sender
LoginDelegate就在这一行:
@protocol LoginDelegate
- (void)audioLoaded;
@end
这样你就可以打电话了
[sender audioLoaded];