gpt4 book ai didi

ios - Objective-C 中的委托(delegate)

转载 作者:行者123 更新时间:2023-11-28 22:15:44 25 4
gpt4 key购买 nike

我是 Objective-C 的新手,我想了解委托(delegate)。我已经搜索和阅读了很多,但没有什么能真正帮助我理解。我认为理解这一点的最好方法可能是使用示例应用程序提问。

我正在尝试创建成绩计算器应用程序来测试我的技能。这是我的文件:

mainTableViewController.h

#import <UIKit/UIKit.h>

@interface mainTableViewController : UITableViewController

@end

mainTableViewController.m

#import "mainTableViewController.h"
#import "addLectureViewController.h"


@interface mainTableViewController ()

@end

@implementation anaTableViewController

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
[lectureName count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

return cell;
}

@end

添加LectureViewController.h

#import <UIKit/UIKit.h>

@interface addLectureViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *lectureNameTextField;
- (IBAction)addButtonPressed:(id)sender;

@property NSMutableArray *lectureName;
@property NSObject *lecture;

@end

添加LectureViewController.m

#import "addLectureViewController.h"

@interface addLectureViewController ()

@end

@implementation addLectureViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];

_lectureName = [[NSMutableArray alloc] init];
_lecture = [[NSObject alloc] init];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];

}

- (IBAction)addButtonPressed:(id)sender {

_lecture = _lectureNameTextField.text;
[_lectureName addObject:_lecture];
NSLog(@"%@",_lectureName);


}
@end

目前一切正常。但是当我尝试在 mainTableViewController.m 中使用 _lectureName NSMutableArray 时,我看不到数组。

我知道在 tableView 中打印数组的代码。我知道他们现在不在那儿。我只是不明白对我的代码实现委托(delegate)代码。

最佳答案

如果你想在表格的行上显示一些东西,你可以使用一个 NSArray 并且你必须在委托(delegate)方法中返回数组的计数:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return array.count;
}

否则,表格将不会显示任何元素。只有当您在 numberOfRowsInSection 方法中返回特定数组计数时,才会调用委托(delegate)方法 cellForRowAtIndexPath。

您可以引用这些链接来了解委托(delegate): http://www.tutorialspoint.com/ios/ios_delegates.htm

How do I set up a simple delegate to communicate between two view controllers?

http://code.tutsplus.com/tutorials/ios-sdk-custom-delegates--mobile-10848

但是在tableView的情况下,委托(delegate)方法是在内部定义并在内部触发的。我们只需要将这些委托(delegate)设置为充当监听器的 Controller 。

关于ios - Objective-C 中的委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21753179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com