Tôi đang gặp phải một thời gian khủng khiếp khi nhận được UIAlertView để hoạt động trong lớp NSObject tùy chỉnh của mình. Trong nghiên cứu tôi đã làm nó xuất hiện nó sẽ là có thể nhưng đây là những gì tôi đã chạy vào.Sử dụng UIAlertView trong NSObject
Thứ nhất, đây là mã của tôi:
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"clickedButtonAtIndex: %d", buttonIndex);
}
-(void)testAlertView {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"List Contains Items"
message:@"List contains items. Remove all items & delete?"
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[alertView show];
}
Nếu tôi đặt các đại biểu để tự mã này bị treo ngay sau khi tôi gõ một nút. Nếu tôi đặt nó thành nil clickButtonAtIndex thì không bao giờ được gọi. Tôi đã thử với và không sử dụng <UIAlertViewDelegate>
.
Tôi biết ai đó sẽ hỏi 'tại sao bạn làm điều này trong NSObject thay vì trong UIViewController?'. Chủ yếu là vì tôi muốn tách mã này ra để tôi có thể sử dụng nó từ nhiều nơi trong ứng dụng của mình. Nhưng cũng bởi vì đây là một phần nhỏ của một khối logic lớn hơn có ý nghĩa để trở thành của riêng nó.
Bất kỳ ý tưởng nào tôi đang làm sai?
Cảm ơn, Giàu
Mã này * nên * làm việc, thực sự. Khi đại biểu được đặt và cảnh báo gặp sự cố, chính xác thì sự cố xảy ra ở đâu và có dấu vết ngăn xếp không? –
Đối tượng của bạn đã được deallocated bởi thời gian bạn chạm vào nút? (Các đối tượng thường không giữ lại các đại biểu của họ) –
Đây chỉ là điển hình. Tôi đã dành hàng giờ nhìn chằm chằm vào điều này và nghiên cứu và cố gắng một điều khác không thành công, vì vậy tôi quyết định yêu cầu giúp đỡ. Không quá một giờ sau, tôi cuối cùng đã tìm ra. Nó phải liên quan đến cách tôi tạo đối tượng tùy chỉnh trong bộ điều khiển chế độ xem cuộc gọi, vì vậy nó đã được giải phóng vào lúc tôi nhấn nút, giống như Frederick đề xuất. Cảm ơn các bậc tiền bối! – rdfrahm