How would a restaurant accept Bitcoin? How would a customer pay either the whole bill, or just the tip in Bitcoin? 

What technology is best suited for this? (pay by barcode) 

Must the waiter have an iPhone wallet as well? 

How would the restaurant associate payments to customers?
I would envision that when the waiter brings the bill, there would also be a QR code printed on it.  This would be a one-time address owned by the restaurant, and given only to this customer for their particular bill.  If payment is made to this address, then the restaurant knows that the customer paid (or at least someone did).  An amount would probably not be included in the barcode, which would make it easier for the customer to send extra as a tip to the waitstaff.  This is similar to when a customer leaves a stack of banknotes on the table as payment, indicating that the waiter keeps the change as a tip.  The restaurant would be responsible for distributing tips to the waitstaff, just as they are today when you pay with a card.

Alternatively, two barcodes could be printed on the bill.  One would encode the address and amount of the bill to be paid to the restaurant, and another for the address that goes to the waitstaff.  I feel this would be less likely, since it is less convenient to the customer, and makes it more difficult to divide tips in cases where the tips are shared by the whole waitstaff.

By using a barcode printed on the bill, the restaurant's ticketing system will have incorporated the Bitcoin wallet, so the waitstaff does not need to worry about it.  The system would monitor addresses given to customers, and show an idicator when a customer has paid.  The waiter will have very little interaction with Bitcoin, if at all.