即時通訊iOS編程中的新功能。我有1個問題,我已經在谷歌和這個頁面搜索,但我找不到答案。如何將數據IBOutlet連接到UITableView
我想建立一個簡單的聯繫方式演示版。它有2個視圖
第一視圖,我有一個UITableView與空數據,和1添加按鈕。當我點擊添加按鈕,它會出現第二個視圖
第二個視圖,它有窗體和1保存按鈕。填寫完表單後,我單擊保存按鈕,然後我想將它更新到UITableView的單元格,但它不起作用。
對不起我的英文不好,希望你能理解
這裏是我的代碼: 先向Contact.h存儲數據
#import <Foundation/Foundation.h>
@interface Contact : NSObject{
}
@property(strong, nonatomic) NSString *name;
@property(strong, nonatomic) NSString *phoneNumber;
@property(strong, nonatomic) NSString *company;
@property(strong, nonatomic) NSString *email;
@property(strong, nonatomic) NSString *address;
@end
處理事件時,單擊保存按鈕(第二視圖):
- (IBAction)saveButton:(id)sender
{
Contact *c = [[Contact alloc] init];
c.name = self.nameText.text;
c.company = self.comText.text;
c.phoneNumber = self.phoneText.text;
c.email = self.emailText.text;
c.address = self.addressText.text;
/*telephoneViewController is a class that store my TableView (it is the first view)
*/
TelephoneViewController *tv = [[TelephoneViewController alloc] init];
tv.dataObj = [[NSMutableArray alloc]init];
[tv.tableView beginUpdates];
[tv.dataObj addObject:c];
[tv.tableView insertRowsAtIndexPaths:tv.dataObj withRowAnimation:
UITableViewRowAnimationRight];
[tv.tableView endUpdates];
[tv.tableView reloadData];
// back to first view (UITableView view)
[self.navigationController popViewControllerAnimated:YES];
}
這是我第一次查看: // dataObj是的NSMutableArray,我將其創建存儲聯繫人數據然後我用它在的UITableView
- (void) viewWillAppear:(BOOL)animated
{
[self.tableView reloadData];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.dataObj = [[NSMutableArray alloc]init];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [self.dataObj count];
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell==nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
cell.textLabel.text = [self.dataObj objectAtIndex:indexPath.row];
return cell;
}
//handle when click add button
- (IBAction)addButton:(id)sender
{
//go to second view (view to fill out form)
ContactViewController *vc = [[ContactViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
}
UPDATE顯示 // ================= ===================
在我的FirstView中,我添加了2個方法。但它得到的異常(或錯誤):
- [聯繫行]:無法識別的選擇發送到實例0x8c46610 2014年4月1日22:10:43.750 TelephoneDemo [463:70B] *終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因是:「 - [聯繫列]:無法識別的選擇發送到實例0x8c46610」
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.dataObj = [[NSMutableArray alloc]init];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addContact:) name:@"didAddContact" object:nil];
}
- (void) addContact:(NSNotification *)notification
{
Contact *c = (Contact *) notification.object;
self.dataObj = [[NSMutableArray alloc]init];
[self.tableView beginUpdates];
[self.dataObj addObject:c];
[self.tableView insertRowsAtIndexPaths:self.dataObj withRowAnimation:UITableViewRowAnimationRight];
[self.tableView endUpdates];
[self.tableView reloadData];
}
哪裏是IBOutlet屬性 – Spynet
@Spynet在其他.h文件 –