TableView总是为零

时间:2014-06-24 11:45:02

标签: ios uitableview xcode5.1

我的TableView有一个奇怪的问题,总是设置为nil。我会解释更多:

这是我的故事板:

StoryBoard

在我的BuddyListViewController.m文件中,我实例化了我的ChatViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
userName = (NSString *) [onlineBuddies objectAtIndex:indexPath.row];
JCChatViewController *chatController = [[JCChatViewController alloc] initWithUser:userName];
    [self presentViewController:chatController animated:YES completion:nil];
} 

ChatViewController(.h)文件

@interface JCChatViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    UITextField *messageField;
    UITableView *tView;
}

@property (nonatomic,retain) IBOutlet UITextField *messageField;
@property (nonatomic,strong) IBOutlet UITableView *tView;

-(id) initWithUser:(NSString *) userName;
-(IBAction)sendMessage;
@end

我还将tableView与我的tView属性

相关联

ChatViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    self.tView.delegate = self;
    self.tView.dataSource = self;
   [self.tView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
}

在调试时,我总是将self.tView等于nil,非常离奇,因此,我的TableView Delegate方法不会被调用。

祝你好运

1 个答案:

答案 0 :(得分:1)

在代码中创建 JCChatViewController 对象时,不会创建它的视图。如果您希望按照故事板中的描述创建视图,则有两种选择:

  • 使用UIStoryboard的方法在 didSelectRowAtIndexPath 中创建

- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier

您可以从当前的视图控制器对象中获取故事板。 您还需要在故事板中为 JCChatViewController 指定一些 storyboard id

  • 在故事板中创建一个segue,用于连接好友列表聊天控制器中的单元格。您可以将任何其他数据传递到方法
  • 中的聊天控制器

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

应该在好友列表控制器中重写。