Tôi đang làm việc trên một ứng dụng mà phần lớn giao diện người dùng được thiết lập thông qua Bảng phân cảnh trong Xcode. Một điều mà tôi muốn làm là chỉ định "Hoàn thành" hình ảnh cho các UITabBarItems trên một TabBar chứ không phải là mặc định "Stencilled" hình ảnh mà bạn có thể truy cập thông qua giao diện Builder.Đặt hình ảnh TabBar đã hoàn thành khi sử dụng bảng phân cảnh?
Câu hỏi của tôi là nơi tốt nhất để làm điều này, tôi hiện đang làm điều đó trong awakeFromNib vì nó cần phải được thực hiện khi mọi thứ bị hủy lưu trữ khỏi bảng phân cảnh, nhưng tôi không chắc liệu tôi có nên sử dụng initWithCoder không: đó là vấn đề gì tốt nhất?
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if(self) {
UIImage *tabIn = [UIImage imageNamed:@"TAB_IN"];
UIImage *tabOut = [UIImage imageNamed:@"TAB_OUT"];
UITabBarItem *tabBarItem = [self tabBarItem];
[tabBarItem setFinishedSelectedImage:tabOut withFinishedUnselectedImage:tabIn];
[tabBarItem setTitle:@"TWO"];
}
return self;
}
HOẶC
- (void)awakeFromNib {
[super awakeFromNib];
UIImage *tabIn = [UIImage imageNamed:@"TAB_IN"];
UIImage *tabOut = [UIImage imageNamed:@"TAB_OUT"];
UITabBarItem *tabBarItem = [self tabBarItem];
[tabBarItem setFinishedSelectedImage:tabOut withFinishedUnselectedImage:tabIn];
[tabBarItem setTitle:@"TWO"];
}
Tôi hiểu rằng initWithCoder:
được gọi vào lúc bắt đầu của các đối tượng hủy lưu trữ từ ngòi (chứa trong storyboard) khi các cửa hàng và các hoạt động chưa được nối. Tôi cũng hiểu rằng awakeFromNib
được gọi vào cuối quá trình hủy lưu trữ và các tín hiệu mà viewController hiện đã sẵn sàng để sử dụng. Cảm giác của tôi là nó thực sự chỉ phụ thuộc vào những gì bạn muốn làm, mặc dù sử dụng awakeFromNib
có thể chứng minh ít vấn đề như bạn sẽ không nhấn vấn đề nơi các cửa hàng và hành động chưa được nối.
EDIT:
Hãy để tôi nói lại này, những gì tình huống bạn sẽ sử dụng initWithCoder:
đối lập với sự awakeFromNib
và ngược lại?
Cảm ơn Egor, được đánh giá cao. – fuzzygoat